BP神經網絡流程

1初始化

創(chuàng)建網絡規(guī)模

創(chuàng)建網絡規(guī)模列表

net[m+1]=[n_0 n_1 n_2 \dots n_m]
表示m+1層網絡,第i層節(jié)點數(shù)為n_i,輸入為n_0,輸入為n_m

創(chuàng)建權重列表(初始為隨機數(shù))

weight[m]=[W_{n_1,n_0}^1 W_{n_2,n_1}^2 \dots W_{n_m,n_{m-1}}^m]

創(chuàng)建閾值列表(初始為隨機數(shù))

threshold[m]=[B_{n_1}^1 B_{n_2}^2 \dots B_{n_m}^m]

創(chuàng)建更新權重列表(初始為0)

delta_weight[m]=[dW_{n_1,n_0}^1 dW_{n_2,n_1}^2 \dots dW_{n_m,n_{m-1}}^m]

創(chuàng)建更新閾值列表(初始為0)

delta_threshold[m]=[dB_{n_1}^1 dB_{n_2}^2 \dots dB_{n_m}^m]

構造Sigmod函數(shù)

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

Sigmod計算結果列表

h[m+1]=[H_{n_0}^0 H_{n_1}^1 H_{n_2}^2 \dots H_{n_m}^m]
輸入為H_{n_0}^0,輸入為H_{n_m}^m

加權和計算結果列表

i[m]=[I_{n_1}^1 I_{n_2}^2 \dots I_{n_m}^m]

2正向計算

for k in range(1,m+1):#循環(huán)m次
----#\begin{bmatrix}I_{n_k}^k\\1\end{bmatrix} = \begin{bmatrix}W_{n_k,n_0}^k&B_{n_k}^k\\0&1\\\end{bmatrix} {\cdot} \begin{bmatrix}H_{n_{k-1}}^{k-1}\\1\end{bmatrix}
----#H_{n_k}^k=Sigmod(I_{n_k}^k)

3反向計算

初始化:
E_H[m]=[EH_{n_1}^1EH_{n_2}^2 \dots EH_{n_m}^m]
EH_{n_m}^m=\frac{\partial E_{total}}{\partial H_{n_m}^m} = \begin{bmatrix} {h_1^m-y_1}\\{h_2^m-y_2}\\{\vdots}\\{h_{n_m}^m-y_{n_m}}\\ \end{bmatrix}
H_I[m]=[HI_{n_1,n_1}^1HI_{n_2,n_2}^2 \dots HI_{n_m,n_m}^m]


for k in range(m,0,-1):
----#1.HI_{n_k,n_k}^k=\frac{\partial H_{n_k}^k}{\partial I_{n_k}^k} =\begin{bmatrix} {h_1^k(1-h_1^k)}&0&0&0\\ 0&{h_2^k(1-h_2^k)}&0&0\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ 0&0&0&{h_{n_k}^k(1-h_{n_k}^k)}\\ \end{bmatrix}
----#2.\begin{bmatrix} dW_{n_k,n_{k-1}}^kdB_{n_k}^k\end{bmatrix} = \begin{bmatrix} \Delta W_{n_k,n_{k-1}}^k&\Delta B_{n_k}^k \end{bmatrix} = HI_{n_k,n_k}^kEH_{n_k}^k \begin{bmatrix} [H_{n_{k-1}}^{k-1}]^T&1\\ \end{bmatrix}
----#3.{IH_{n_k}^k}=\frac{\partial I_{n_k}^k}{\partial H_{n_{k-1}}^{k-1}}=[W_{n_k,n_{k-1}}^k]^T
----#4.{EH_{n_{k-1}}^{k-1}} = \frac{\partial I_{n_k}^k}{\partial H_{n_{k-1}}^{k-1}} \frac{\partial H_{n_k}^k}{\partial I_{n_k}^k} \frac{\partial E_{total}}{\partial H_{n_k}^k} ={IH_{n_k}^k}HI_{n_k,n_k}^kEH_{n_k}^k


weight[m]=weight[m]+delta_weight[m]
threshold[m]=threshold[m]+delta_threshold[m]

python實現(xiàn)的BP神經網絡
https://github.com/dai-zb/BPNN_python.git

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容