資源描述:
《BP神經(jīng)網(wǎng)絡(luò)的設(shè)計實例MATLAB編程.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、BP神經(jīng)網(wǎng)絡(luò)的設(shè)計實例(MATLAB編程)例1采用動量梯度下降算法訓(xùn)練BP網(wǎng)絡(luò)。訓(xùn)練樣本定義如下:輸入矢量為p=[-1-231-115-3]目標(biāo)矢量為t=[-1-111]解:本例的MATLAB程序如下:closeallclearechoonclc%NEWFF——生成一個新的前向神經(jīng)網(wǎng)絡(luò)%TRAIN——對BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練%SIM——對BP神經(jīng)網(wǎng)絡(luò)進行仿真pause%敲任意鍵開始clc%定義訓(xùn)練樣本%P為輸入矢量P=[-1,-2,3,1;-1,1,5,-3];%T為目標(biāo)矢量T=[-1,-1,1,
2、1];pause;clc%創(chuàng)建一個新的前向神經(jīng)網(wǎng)絡(luò)net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')%當(dāng)前輸入層權(quán)值和閾值inputWeights=net.IW{1,1}inputbias=net.b{1}%當(dāng)前網(wǎng)絡(luò)層權(quán)值和閾值layerWeights=net.LW{2,1}layerbias=net.b{2}pauseclc%設(shè)置訓(xùn)練參數(shù)net.trainParam.show=50;net.trainParam.lr=0.05;
3、net.trainParam.mc=0.9;net.trainParam.epochs=1000;net.trainParam.goal=1e-3;pauseclc%調(diào)用TRAINGDM算法訓(xùn)練BP網(wǎng)絡(luò)[net,tr]=train(net,P,T);pauseclc%對BP網(wǎng)絡(luò)進行仿真A=sim(net,P)%計算仿真誤差E=T-AMSE=mse(E)pauseclcechooff例2采用貝葉斯正則化算法提高BP網(wǎng)絡(luò)的推廣能力。在本例中,我們采用兩種訓(xùn)練方法,即L-M優(yōu)化算法(trainlm)和
4、貝葉斯正
則化算法(trainbr),用以訓(xùn)練BP網(wǎng)絡(luò),使其能夠擬合某一附加有白噪聲的正弦樣本數(shù)據(jù)。其中,樣本數(shù)據(jù)可以采用如下MATLAB
語句生成:輸入矢量:P=[-1:0.05:1];目標(biāo)矢量:randn(’seed’,78341223);T=sin(2*pi*P)+0.1*randn(size(P));解:本例的MATLAB程序如下:closeallclearechoonclc%NEWFF——生成一個新的前向神經(jīng)網(wǎng)絡(luò)%TRAIN——對BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練%SIM——對BP神經(jīng)網(wǎng)絡(luò)進行仿真p
5、ause%敲任意鍵開始clc%定義訓(xùn)練樣本矢量%P為輸入矢量P=[-1:0.05:1];%T為目標(biāo)矢量randn('seed',78341223);T=sin(2*pi*P)+0.1*randn(size(P));%繪制樣本數(shù)據(jù)點plot(P,T,'+');echooffholdon;plot(P,sin(2*pi*P),':');%繪制不含噪聲的正弦曲線echoonclcpauseclc%創(chuàng)建一個新的前向神經(jīng)網(wǎng)絡(luò)net=newff(minmax(P),[20,1],{'tansig','pur
6、elin'});pauseclcechooffclcdisp('1.L-M優(yōu)化算法TRAINLM');disp('2.貝葉斯正則化算法TRAINBR');choice=input('請選擇訓(xùn)練算法(1,2):');figure(gcf);if(choice==1)echoonclc%采用L-M優(yōu)化算法TRAINLMnet.trainFcn='trainlm';pauseclc%設(shè)置訓(xùn)練參數(shù)net.trainParam.epochs=500;net.trainParam.goal=1e-6;net
7、=init(net);%重新初始化pauseclcelseif(choice==2)echoonclc%采用貝葉斯正則化算法TRAINBRnet.trainFcn='trainbr';pauseclc%設(shè)置訓(xùn)練參數(shù)net.trainParam.epochs=500;randn('seed',192736547);net=init(net);%重新初始化pauseclcend%調(diào)用相應(yīng)算法訓(xùn)練BP網(wǎng)絡(luò)[net,tr]=train(net,P,T);pauseclc%對BP網(wǎng)絡(luò)進行仿真A=sim(n
8、et,P);%計算仿真誤差E=T-A;MSE=mse(E)pauseclc%繪制匹配結(jié)果曲線closeall;plot(P,A,P,T,'+',P,sin(2*pi*P),':');pause;clcechooff通過采用兩種不同的訓(xùn)練算法,我們可以得到如圖1和圖2所示的兩種擬合結(jié)果。圖中的實線表示擬合曲線,虛線代表不含白噪聲的
正弦曲線,“+”點為含有白噪聲的正弦樣本數(shù)據(jù)點。顯然,經(jīng)trainlm函數(shù)訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)對樣本數(shù)據(jù)點實現(xiàn)了“過度匹配”
,而經(jīng)trainbr函數(shù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)對噪聲不