BP神經網絡訓練函數:
BP網絡建構:
1、生成BP網絡
net=newff(PR,[S1 S2...SNl]),{TF1 TF2...TFNl},BTF)
複制
PR:由R維的輸入樣本最小最大值構成的R*2維矩陣
[S1 S2…SNl]各層的神經元個數
{TF1 TF2…TFNl}各層的神經元傳遞函數
BTF訓練用函數的名稱
2、網絡訓練
net=train(net,P,T)
複制
3、網絡仿真
Y2=sim(net,P2)
複制
matlab程式示例:
clear;
clc;
X=-1:0.1:1;
D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...
0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];
figure;
plot(X,D,'*'); %繪制原始資料分布圖(附錄:1-1)
net = newff(minmax(X),[5 1],{'tansig','tansig'});
net.trainParam.epochs = 100; %訓練的最大次數
net.trainParam.goal = 0.005; %全局最小誤差
net = train(net,X,D);
O = sim(net,X);
figure;
plot(X,D,X,O,'r'); %繪制訓練後得到的結果和誤差曲線
V = net.iw{1,1}%輸入層到中間層權值
theta1 = net.b{1}%中間層各神經元門檻值
W = net.lw{2,1}%中間層到輸出層權值
theta2 = net.b{2}%輸出層各神經元門檻值
複制
程式運作結果:
程式解讀:
figure %用于建立程式視窗
net = newff(minmax(X),[5 1],{‘tansig’,‘tansig’});
生成BP網絡
minmax傳回數組中每一行的最小值和最大值
運作
X=-1:0.1:1;
minmax(X)
傳回-1,1
[5 1]:兩層神經元個數為5,1
tansig:即tansig函數,兩層均用此函數訓練
net = train(net,X,D):X自變量,D因變量
O = sim(net,X):預測(仿真)函數,O即X對應的因變量
訓練視窗的注解:
epoch:其代表着疊代次數
time:訓練的時間
validation checks:與performance和gradient同為停止條件之一。意思是若連續幾次訓練performance和gradient的效果不再提高則視為訓練完成。但是通過performance和gradient停止意味着該神經網絡達到了我們的預期,而通過validation checks停止則意味着該神經網絡沒有達到了我們的預期。
訓練圖注解:
Performance’按鈕可以顯示訓練結果示意圖
Training State’可以得到神經網絡訓練參數的變化過程示意圖
Regression‘得到拟合結果,R越接近1拟合效果越好