版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
------------------------------------------------------------------------BP神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)實(shí)例(MATLAB編程)BP神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)實(shí)例(MATLAB編程)例1采用動(dòng)量梯度下降算法訓(xùn)練BP網(wǎng)絡(luò)。訓(xùn)練樣本定義如下:輸入矢量為p=[-1-231-115-3]目標(biāo)矢量為t=[-1-111]解:本例的MATLAB程序如下:closeallclearechoonclc%NEWFF——生成一個(gè)新的前向神經(jīng)網(wǎng)絡(luò)%TRAIN——對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練%SIM——對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真pause%敲任意鍵開始clc%定義訓(xùn)練樣本%P為輸入矢量P=[-1,-2,3,1;-1,1,5,-3];%T為目標(biāo)矢量T=[-1,-1,1,1];pause;clc%創(chuàng)建一個(gè)新的前向神經(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;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%對(duì)BP網(wǎng)絡(luò)進(jìn)行仿真A=sim(net,P)%計(jì)算仿真誤差E=T-AMSE=mse(E)pauseclcechooff例2采用貝葉斯正則化算法提高BP網(wǎng)絡(luò)的推廣能力。在本例中,我們采用兩種訓(xùn)練方法,即L-M優(yōu)化算法(trainlm)和貝葉斯正
則化算法(trainbr),用以訓(xùn)練BP網(wǎng)絡(luò),使其能夠擬合某一附加有白噪聲的正弦樣本數(shù)據(jù)。其中,樣本數(shù)據(jù)可以采用如下MATLAB
語(yǔ)句生成:輸入矢量:P=[-1:0.05:1];目標(biāo)矢量:randn(’seed’,78341223);T=sin(2*pi*P)+0.1*randn(size(P));解:本例的MATLAB程序如下:closeallclearechoonclc%NEWFF——生成一個(gè)新的前向神經(jīng)網(wǎng)絡(luò)%TRAIN——對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練%SIM——對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真pause%敲任意鍵開始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ù)點(diǎn)plot(P,T,'+');echooffholdon;plot(P,sin(2*pi*P),':');%繪制不含噪聲的正弦曲線echoonclcpauseclc%創(chuàng)建一個(gè)新的前向神經(jīng)網(wǎng)絡(luò)net=newff(minmax(P),[20,1],{'tansig','purelin'});pauseclcechooffclcdisp('1.L-M優(yōu)化算法TRAINLM');disp('2.貝葉斯正則化算法TRAINBR');choice=input('請(qǐng)選擇訓(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=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%對(duì)BP網(wǎng)絡(luò)進(jìn)行仿真A=sim(net,P);%計(jì)算仿真誤差E=T-A;MSE=mse(E)pauseclc%繪制匹配結(jié)果曲線closeall;plot(P,A,P,T,'+',P,sin(2*pi*P),':');pause;clcechooff通過(guò)采用兩種不同的訓(xùn)練算法,我們可以得到如圖1和圖2所示的兩種擬合結(jié)果。圖中的實(shí)線表示擬合曲線,虛線代表不含白噪聲的
正弦曲線,“+”點(diǎn)為含有白噪聲的正弦樣本數(shù)據(jù)點(diǎn)。顯然,經(jīng)trainlm函數(shù)訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)對(duì)樣本數(shù)據(jù)點(diǎn)實(shí)現(xiàn)了“過(guò)度匹配”
,而經(jīng)trainbr函數(shù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)對(duì)噪聲不敏感,具有較好的推廣能力。值得指出的是,在利用trainbr函數(shù)訓(xùn)練BP網(wǎng)絡(luò)時(shí),若訓(xùn)練結(jié)果收斂,通常會(huì)給出提示信息“MaximumMUreached”。此外,
用戶還可以根據(jù)SSE和SSW的大小變化情況來(lái)判斷訓(xùn)練是否收斂:當(dāng)SSE和SSW的值在經(jīng)過(guò)若干步迭代后處于恒值時(shí),則通常說(shuō)
明網(wǎng)絡(luò)訓(xùn)練收斂,此時(shí)可以停止訓(xùn)練。觀察trainbr函數(shù)訓(xùn)練BP網(wǎng)絡(luò)的誤差變化曲線,可見,當(dāng)訓(xùn)練迭代至320步時(shí),網(wǎng)絡(luò)訓(xùn)練收
斂,此時(shí)SSE和SSW均為恒值,當(dāng)前有效網(wǎng)絡(luò)的參數(shù)(有效權(quán)值和閾值)個(gè)數(shù)為11.7973。例3采用“提前停止”方法提高BP網(wǎng)絡(luò)的推廣能力。對(duì)于和例2相同的問(wèn)題,在本例中我們將采用訓(xùn)練函數(shù)traingdx和“提前停
止”相結(jié)合的方法來(lái)訓(xùn)練BP網(wǎng)絡(luò),以提高BP網(wǎng)絡(luò)的推廣能力。解:在利用“提前停止”方法時(shí),首先應(yīng)分別定義訓(xùn)練樣本、驗(yàn)證樣本或測(cè)試樣本,其中,驗(yàn)證樣本是必不可少的。在本例中,我們
只定義并使用驗(yàn)證樣本,即有驗(yàn)證樣本輸入矢量:val.P=[-0.975:.05:0.975]驗(yàn)證樣本目標(biāo)矢量:val.T=sin(2*pi*val.P)+0.1*randn(size(val.P))值得注意的是,盡管“提前停止”方法可以和任何一種BP網(wǎng)絡(luò)訓(xùn)練函數(shù)一起使用,但是不適合同訓(xùn)練速度過(guò)快的算法聯(lián)合使用,比
如trainlm函數(shù),所以本例中我們采用訓(xùn)練速度相對(duì)較慢的變學(xué)習(xí)速率算法traingdx函數(shù)作為訓(xùn)練函數(shù)。本例的MATLAB程序如下:closeallclearechoonclc%NEWFF——生成一個(gè)新的前向神經(jīng)網(wǎng)絡(luò)%TRAIN——對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練%SIM——對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真pause%敲任意鍵開始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));%繪制訓(xùn)練樣本數(shù)據(jù)點(diǎn)plot(P,T,'+');echooffholdon;plot(P,sin(2*pi*P),':');%繪制不含噪聲的正弦曲線echoonclcpauseclc%定義驗(yàn)證樣本val.P=[-0.975:0.05:0.975];%驗(yàn)證樣本的輸入矢量val.T=sin(2*pi*val.P)+0.1*randn(size(val.P));%驗(yàn)證樣本的目標(biāo)矢量pauseclc%創(chuàng)建一個(gè)新的前向神經(jīng)網(wǎng)絡(luò)net=newff(minmax(P),[5,1],{'tansig','purelin'},'traingdx');pauseclc%設(shè)置訓(xùn)練參數(shù)net.trainParam.epochs=500;net=init(net);pauseclc%訓(xùn)練BP網(wǎng)絡(luò)[net,tr]=train(net,P,T,[],[],val);pauseclc%對(duì)BP網(wǎng)絡(luò)進(jìn)行仿真A=sim(net,P);%計(jì)算仿真誤差E=T-A;MSE=mse(E)pauseclc%繪制仿真擬合結(jié)果曲線closeall;plot(P,A,P,T,'+',P,sin(2*pi*P),':');pause;clcechooff下面給出了網(wǎng)絡(luò)的某次訓(xùn)練結(jié)果,可見,當(dāng)訓(xùn)練至第136步時(shí),訓(xùn)練提前停止,此時(shí)的網(wǎng)絡(luò)誤差為0.0102565。給出了訓(xùn)練后的仿
真數(shù)據(jù)擬合曲線,效果是相當(dāng)滿意的。[net,tr]=train(net,P,T,[],[],val);TRAINGDX,Epoch0/500,MSE0.504647/0,Gradient2.1201/1e-006TRAINGDX,Epoch25/500,MSE0.163593/0,Gradient0.384793/1e-006TRAINGDX,Epoch50/500,MSE0.130259/0,Gradient0.158209/1e-006TRAINGDX,Epoch75/500,MSE0.086869/0,Gradient0.0883479/1e-006TRAINGDX,Epoch100/500,MSE0.0492511/0,Gradient0.0387894/1e-006TRAINGDX,Epoch125/500,MSE0.0110016/0,Gradient0.017242/1e-006TRAINGDX,Epoch136/500,MSE0.0102565/0,Gradient0.01203/1e-006TRAINGDX,Validationstop.例3用BP網(wǎng)絡(luò)估計(jì)膽固醇含量這是一個(gè)將神經(jīng)網(wǎng)絡(luò)用于醫(yī)療應(yīng)用的例子。我們?cè)O(shè)計(jì)一個(gè)器械,用于從血樣的光譜組成的測(cè)量中得到血清的膽固醇含量級(jí)別,我們有261個(gè)病人的血樣值,包括21種波長(zhǎng)的譜線的數(shù)據(jù),對(duì)于這些病人,我們得到了基于光譜分類的膽固醇含量
級(jí)別hdl,ldl,vldl。(1)樣本數(shù)據(jù)的定義與預(yù)處理。choles_all.mat文件中存儲(chǔ)了網(wǎng)絡(luò)訓(xùn)練所需要的全部樣本數(shù)據(jù)。利用load函數(shù)可以在工作空間中自動(dòng)載入網(wǎng)絡(luò)訓(xùn)練所需的輸入數(shù)據(jù)p和目標(biāo)數(shù)據(jù)t,即loadcholes_allsizeofp=size(p)sizeofp=21264sizeoft=size(t)sizeoft=3264可見,樣本集的大小為264。為了提高神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效率,通常要對(duì)樣本數(shù)據(jù)作適當(dāng)?shù)念A(yù)處理。首先,利用prestd函數(shù)對(duì)樣本數(shù)
據(jù)作歸一化處理,使得歸一化后的輸入和目標(biāo)數(shù)據(jù)均服從正態(tài)分布,即[pn,meanp,stdp,tn,meant,stdt]=prestd(p,t);然后,利用prepca函數(shù)對(duì)歸一化后的樣本數(shù)據(jù)進(jìn)行主元分析,從而消除樣本數(shù)據(jù)中的冗余成份,起到數(shù)據(jù)降維的目的。[ptrans,transMat]=prepca(pn,0.001);[R,Q]=size(ptrans)R=4Q=264可見,主元分析之后的樣本數(shù)據(jù)維數(shù)被大大降低,輸入數(shù)據(jù)的維數(shù)由21變?yōu)?。(2)對(duì)訓(xùn)練樣本、驗(yàn)證樣本和測(cè)試樣本進(jìn)行劃分。為了提高網(wǎng)絡(luò)的推廣能力和識(shí)別能力,訓(xùn)練中采用“提前停止”的方法,因此,在訓(xùn)練之前,需要將上面處理后的樣本數(shù)據(jù)適當(dāng)劃分
為訓(xùn)練樣本集、驗(yàn)證樣本集和測(cè)試樣本集。(3)網(wǎng)絡(luò)生成與訓(xùn)練。選用兩層BP網(wǎng)絡(luò),其中網(wǎng)絡(luò)輸入維數(shù)為4,輸出維數(shù)為3,輸出值即為血清膽固醇的三個(gè)指標(biāo)值大小。網(wǎng)
絡(luò)中間層神經(jīng)元數(shù)目預(yù)選為5,傳遞函數(shù)類型選為tansig函數(shù),輸出層傳遞函數(shù)選為線性函數(shù)purelin,訓(xùn)練函數(shù)設(shè)為trainlm。
網(wǎng)絡(luò)的生成語(yǔ)句如下:net=newff(minmax(ptr),[53],{'tansig''purelin'},'trainlm');利用train函數(shù)對(duì)所生成的神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練結(jié)果如下:[net,tr]=train(net,ptr,ttr,[],[],val,test);見,網(wǎng)絡(luò)訓(xùn)練迭代至第20步時(shí)提前停止,這是由于驗(yàn)證誤差已經(jīng)開始變大。利用下面語(yǔ)句可以繪制出訓(xùn)練誤差、驗(yàn)證誤差和測(cè)試誤
差的變化曲線,如圖4.50所示。由圖可見,驗(yàn)證誤差和測(cè)試誤差的變化趨勢(shì)基本一致,說(shuō)明樣本集的劃分基本合理。由訓(xùn)練誤差曲
線可見,訓(xùn)練誤差結(jié)果也是比較滿意的。(4)網(wǎng)絡(luò)仿真。為了進(jìn)一步檢驗(yàn)訓(xùn)練后網(wǎng)絡(luò)的性能,下面對(duì)訓(xùn)練結(jié)果作進(jìn)一步仿真分析。利用postreg函數(shù)可以對(duì)網(wǎng)絡(luò)仿真的輸出
結(jié)果和目標(biāo)輸出作線性回歸分析,并得到兩者的相關(guān)系數(shù),從而可以作為網(wǎng)絡(luò)訓(xùn)練結(jié)果優(yōu)劣的判別依據(jù)。仿真與線性回歸分析如下:an=sim(net,ptrans);a=poststd(an,meant,stdt);fori=1:3figure(i)[m(i),b(i),r(i)]=postreg(a(i,:),t(i,:));end%導(dǎo)入原始測(cè)量數(shù)據(jù)loadcholes_all;%對(duì)原始數(shù)據(jù)進(jìn)行規(guī)范化處理,prestd是對(duì)輸入數(shù)據(jù)和輸出數(shù)據(jù)進(jìn)行規(guī)范化處理,%prepca可以刪除一些數(shù)據(jù),適當(dāng)?shù)乇A袅俗兓恍∮?.01的數(shù)據(jù)[pn,meanp,stdp,tn,meant,stdt]=prestd(p,t);[ptrans,transMat]=prepca(pn,0.001);[R,Q]=size(ptrans)%將原始數(shù)據(jù)分成幾個(gè)部分作為不同用途四分已用于確證,四分一用于測(cè)試,二分一用于訓(xùn)練網(wǎng)絡(luò)iitst=2:4:Q;iival=4:4:Q;iitr=[1:4:Q3:4:Q];%vv是確證向量,.P是輸入,.T是輸出,vt是測(cè)試向量vv.P=ptrans(:,iival);vv.T=tn(:,iival);vt.P=ptrans(:,iitst);vt.T=tn(:,iitst);ptr=ptrans(:,iitr);ttr=tn(:,iitr);%建立網(wǎng)絡(luò),隱層中設(shè)計(jì)5個(gè)神經(jīng)元,由于需要得到的是3個(gè)目標(biāo),所以網(wǎng)絡(luò)需要有3個(gè)輸出net=newff(minmax(ptr),[53],{'tansig''purelin'},'trainlm');%訓(xùn)練網(wǎng)絡(luò)n
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京理工大學(xué)紫金學(xué)院《漢語(yǔ)常識(shí)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年消防演練策劃與實(shí)施服務(wù)合同模板2篇
- 南充職業(yè)技術(shù)學(xué)院《化工發(fā)展與人類進(jìn)步》2023-2024學(xué)年第一學(xué)期期末試卷
- 南充電影工業(yè)職業(yè)學(xué)院《人際溝通》2023-2024學(xué)年第一學(xué)期期末試卷
- 南昌醫(yī)學(xué)院《園林植物遺傳育種實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 閩江師范高等??茖W(xué)?!渡鐣?huì)語(yǔ)言學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 綿陽(yáng)師范學(xué)院《裝備產(chǎn)品設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 茅臺(tái)學(xué)院《質(zhì)量管理與可靠性工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 潞安職業(yè)技術(shù)學(xué)院《種子工程與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 瀘州職業(yè)技術(shù)學(xué)院《SPSS軟件實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 臺(tái)資企業(yè)A股上市相關(guān)資料
- 電 梯 工 程 預(yù) 算 書
- 羅盤超高清圖
- 參會(huì)嘉賓簽到表
- 機(jī)械車間員工績(jī)效考核表
- 形式發(fā)票格式2 INVOICE
- 2.48低危胸痛患者后繼治療評(píng)估流程圖
- 人力資源管理之績(jī)效考核 一、什么是績(jī)效 所謂績(jī)效簡(jiǎn)單的講就是對(duì)
- 山東省醫(yī)院目錄
- 云南地方本科高校部分基礎(chǔ)研究
- 廢品管理流程圖
評(píng)論
0/150
提交評(píng)論