前饋神經網路BPNN簡單實現
阿新 • • 發佈:2021-01-05
分為4個步驟
初始化
使用隨機函式分配權重,和偏置,除了輸入層之外,都需要加入偏置。
計算輸出
計算每個神經元的輸出結果
計算誤差
輸出層的誤差計算
中間層的誤差計算
調整權重和偏置
其中 L為學習率,可以設定為0.9,接下來調整權重
實現
matlab實現程式碼如下
%% 簡單前饋神經網路
% 初始化權重和偏置
W12=rand([3,2]);
W23=rand([2,1]);
B12=rand([1,2]);
B23=rand([1,1]);
% 輸出
input=[1,0,1];
for i=1:1000
% 計算輸出
S2=input*W12+B12;
O2= (1+exp(-S2)).^-1;
S3=O2*W23+B23;
O3=(1+exp(-S3)).^-1;
% 計算誤差
E3=O3.*(1-O3).*(1-O3);
E2=O2.*(1-O2).*(sum(W23*E3,2).');
% 調整
W23=W23+(0.9)*O3.*E3;
W12=W12+(0.9)*O2.*E2;
B12=B12+(0.9)*E2;
B23=B23+(0.9)*E3;
end