【深度學習的數學】繪製2×3×1層帶sigmoid激活函數的神經網絡感知機輸出函數的三維圖像(神經網絡參數使用正態分佈隨機數)

閱讀博客時,神經網絡的輸入變量剛好爲兩個,輸出變量爲1個,於是想繪製一下輸出函數的三維圖像是什麼樣的
在這裏插入圖片描述

代碼

# -*- coding: utf-8 -*-
"""
@File    : 1.py
@Time    : 2020/5/25 21:33
@Author  : Dontla
@Email   : [email protected]
@Software: PyCharm
"""
# 第一種創建3D圖形的方法:創建子圖

# 用創建子圖的方法畫出來感覺要比下面的方法小一點??

from matplotlib import pyplot as plt  # 用來繪製圖形

from mpl_toolkits.mplot3d import Axes3D

import numpy as np  # 用來處理數據


# Dontla:定義sigmoid函數
def sigmoid(x):
    return 1.0 / (1 + np.exp(-x))


# 初始化神經網絡參數(用正態分佈隨機數)
w1 = np.random.randn(2, 3)
b1 = np.random.randn(3)
w2 = np.random.randn(3)

fig = plt.figure()

print('fig的類型:', type(fig), '\n')

print('fig:\n', fig, '\n')

ax = fig.add_subplot(111, projection='3d')

print('ax的類型:', type(ax), '\n')

print('ax:\n', ax, '\n')

# X = np.arange(-10, 10, 0.25)
X = np.arange(-10, 10, 0.1)

# Y = np.arange(-10, 10, 0.25)
Y = np.arange(-10, 10, 0.1)

X, Y = np.meshgrid(X, Y)

Z = sigmoid(w2[0] * sigmoid(w1[0, 0] * X + w1[1, 0] * Y + b1[0]) +
            w2[1] * sigmoid(w1[0, 1] * X + w1[1, 1] * Y + b1[1]) +
            w2[2] * sigmoid(w1[0, 2] * X + w1[1, 2] * Y + b1[2]))

ax.plot_surface(X, Y, Z, cmap='rainbow')

plt.show()

結果:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
結果每次都不一樣的

參考文章1:【深度學習的數學】激活函數的作用是什麼?

參考文章2:python numpy.random.randn()與numpy.random.rand()的區別 (正態分佈公式)(標準正態分佈 standard normal distribution)

參考文章3:深入淺出python機器學習_如何用python畫三維圖? add_subplot() Axes3D() plot_surface() gca()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章