閱讀博客時,神經網絡的輸入變量剛好爲兩個,輸出變量爲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()
結果:
結果每次都不一樣的
參考文章3:深入淺出python機器學習_如何用python畫三維圖? add_subplot() Axes3D() plot_surface() gca()