如何從頭設計一個神經網路庫
阿新 • • 發佈:2018-11-10
本系列教程分為兩部分
- 1 設計一個神經網路庫的基本架構設計
- 2 每個組建的具體實現細節
1 神經網路庫的基本架構設計
為了專案程式碼的可擴充套件性,我們選取面向物件的編碼方式。我們設計的基本架構主要包括幾個主要模組
- 1.神經網路基本元件( ):主要用於支援神經網路執行的完整流程,其中包括新增網路層,訓練網路模型,預測等主要方法。
- 2 .層元件(
- 3.啟用函式元件。主要實現神經網路中不同啟用函式:比如說 , 。啟用函式元件主要有函式的定義以及函式一階導的定義組成。
- 4 損失函式元件。主要實現神經網路中的不同的損失函式:比如說對於迴歸問題的平方損失函式,對於分類問題的交叉熵損失函式。損失函式元件主要由函式定義以及函式一階導定義組成
- 5 優化器元件。主要實現神經網路中不同的優化方法:比如說隨機梯度下降法,動量梯度下降法,以及 等等。優化器元件主要有更新引數方法組成。
圖形化的解釋
2 每個組建的具體實現細節
1.神經網路基本元件
主要用於支援神經網路執行的完整流程,其中包括新增網路層,訓練網路模型,預測等主要方法。
2.層元件
(1)
前向傳播:
反向傳播:
- 首先接收損失函式對於該層輸出的導數 (可以作為引數傳進來),
- 然後通過鏈式求導法則,
- 更新引數權重,並且回傳
(2)
前向傳播:
:
反向傳播:
- 首先接收損失函式對於該層輸出的導數 (可以作為引數傳進來),形狀是(batch_size,timesteps,input_dim)
- 對於每個步長t從1到T,首先計算垂直方向的梯度 ,