天天看點

數學模組化學習筆記(十三)神經網絡——中:matlab程式實作

BP神經網絡訓練函數:

數學模組化學習筆記(十三)神經網絡——中:matlab程式實作

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}%輸出層各神經元門檻值           

複制

程式運作結果:

數學模組化學習筆記(十三)神經網絡——中:matlab程式實作
數學模組化學習筆記(十三)神經網絡——中:matlab程式實作
數學模組化學習筆記(十三)神經網絡——中:matlab程式實作

程式解讀:

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函數,兩層均用此函數訓練

數學模組化學習筆記(十三)神經網絡——中:matlab程式實作

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拟合效果越好