熬過了上一篇漫長的代碼,稍微解開了一丟丟疑惑,使得抽象的BP有一點具體化了,可是還是有好多細節的東西沒有講清楚,比如,為什么要用激活函數?為什么隨機梯度下降沒有提到?下面我們來一一解開疑惑。
首先是為什么要使用激活函數?這要回顧一下我們在學習BP之前學習的感知器模型。它模仿的是人類體內的信號傳導的過程,當信號達到一定的閾值時,就可以繼續向后傳播。
那這個感知器模型和BP網絡有什么關系呢?在我們所看到的BP網絡的結構圖中,其實是被簡化了的,下面小編畫了一個邏輯更清晰一點的圖:
這樣我們就可以看出來,其實BP網絡是由一個一個的感知器組成,也就構成了一個真正的神經網絡,自然就能理解為什么要使用激活函數了。
接下來我們來看一下TensorFlow實現BP神經網絡到底有多簡單!
#構建一個結構為[10,15,1]的BP神經網絡
model = tf.keras.Sequential([tf.keras.layers.Dense(15,activation='relu',input_shape=(10,)),
tf.keras.layers.Dense(1)])
model.summary() #顯示網絡結構
model.compile(optimizer='SGD',loss='mse') #定義優化方法為隨機梯度下降,損失函數為mse
#x->訓練集,y——>bia標簽,epochs=10000訓練的次數,validation_data=(test_x,test_y)——>驗證集
history = model.fit(x,y,epochs=10000,validation_data=(test_x,test_y))
上面就是一個最簡單的BP網絡的網絡結構,小編還準備好了完整的通用框架代碼,不用總是修改隱藏層,可以直接使用哦!公眾號發送“BP源碼”就可以獲取!是不是非常驚訝!昨天的百行代碼完全消失了,這短短幾行代碼就可實現一個BP網絡。
這里解釋一下validation_data,這是驗證集,作用和測試集是一樣的,只不過驗證集是在訓練過程中對模型進行測試,這樣方便觀察模型的準確性。loss函數的作用是計算模型的預測誤差,也就是是衡量模型的準確度,常用的誤差函數還有mse,mae,rmse,mape等等,模型中有很多誤差函數不能直接調用,但是可以自己定義。
SGD就是我們所說的隨機梯度下降算法了,但是現在我們普遍認為“adam”是目前最好的優化算法,當然這也根據不同的神經網絡做不同的選擇。想要研究理論的讀者可以去查一查資料,小編作為實戰派就不對理論做過多的闡述了!
另外再列出來同樣強大的pytorch框架的代碼,大家可以自行選取。
class Model(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Sequential(
nn.Linear(10, 15),
nn.ReLU(),
nn.Dropout(), #防止過度擬合,TensorFlow也有
nn.Linear(15, 2)
)
def forward(self, x):
x = self.fc(x)
return x
關于選擇哪一個框架的問題,在TensorFlow2.0出現之前,小編會推薦pytorch,現在的TensorFlow2.0和pytorch代碼風格已經越來越接近了,但是TensorFlow2.0可以支持的平臺更多,所以這里推薦TensorFlow2.0。
有什么問題,歡迎大家留言討論!
-
信號
+關注
關注
11文章
2804瀏覽量
77099 -
閾值
+關注
關注
0文章
123瀏覽量
18549 -
函數
+關注
關注
3文章
4346瀏覽量
62968 -
BP網絡
+關注
關注
0文章
27瀏覽量
22068 -
tensorflow
+關注
關注
13文章
329瀏覽量
60629
發布評論請先 登錄
相關推薦
labview BP神經網絡的實現
深度學習框架TensorFlow&TensorFlow-GPU詳解
高階API構建模型和數據集使用
TensorFlow的特點和基本的操作方式
TensorFlow實戰之深度學習框架的對比
![<b class='flag-5'>TensorFlow</b>實戰之深度學習<b class='flag-5'>框架</b>的對比](https://file1.elecfans.com//web2/M00/A6/E7/wKgZomUMQSeANZ0yAAAUhl-7tLc973.png)
TensorFlow的框架結構解析
![<b class='flag-5'>TensorFlow</b>的<b class='flag-5'>框架</b>結構解析](https://file1.elecfans.com//web2/M00/A7/2C/wKgZomUMQtGAZbSWAAAYc7IPDy0768.jpg)
機器學習框架Tensorflow 2.0的這些新設計你了解多少
TensorFlow2.0終于問世,Alpha版可以搶先體驗
![<b class='flag-5'>TensorFlow2.0</b>終于問世,Alpha版可以搶先體驗](https://file.elecfans.com/web1/M00/87/87/pIYBAFyBxmiAK9MuAAAGaQLLPos169.png)
IJCAI 2019上的一個TensorFlow2.0實操教程,117頁PPT干貨分享
tensorflow能做什么_tensorflow2.0和1.0區別
神經網絡原理簡述—卷積Op求導
![神經<b class='flag-5'>網絡</b>原理簡述—卷積Op求導](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論