




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、bp神經(jīng)網(wǎng)絡(luò)的設(shè)計實例(matlab編程) 轉(zhuǎn)_愛在轉(zhuǎn)世重生_百度空間(轉(zhuǎn)載)bp神經(jīng)網(wǎng)絡(luò)的設(shè)計實例(matlab編程) 轉(zhuǎn)2010年04月06日 星期二 下午 01:22bp神經(jīng)網(wǎng)絡(luò)的設(shè)計實例(matlab編程)例1 采用動量梯度下降算法訓(xùn)練 bp 網(wǎng)絡(luò)。訓(xùn)練樣本定義如下:輸入矢量為p =-1 -2 3 1 -1 1 5 -3目標(biāo)矢量為 t = -1 -1 1 1解:本例的 matlab 程序如下:close allclearecho onclc% newff生成一個新的前向神經(jīng)網(wǎng)絡(luò)% train對 bp 神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練% sim對 bp 神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真pause% 敲任意鍵開始clc%
2、 定義訓(xùn)練樣本% p 為輸入矢量p=-1, -2, 3, 1; -1, 1, 5, -3;% t 為目標(biāo)矢量t=-1, -1, 1, 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.iw1,1inputbias=net.b1% 當(dāng)前網(wǎng)絡(luò)層權(quán)值和閾值layerweights=net.lw2,1layerbias=net.b2pauseclc% 設(shè)置訓(xùn)練參數(shù)net.trainparam.show = 50;net.trainparam.lr =
3、 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% 對 bp 網(wǎng)絡(luò)進(jìn)行仿真a = sim(net,p)% 計算仿真誤差e = t - amse=mse(e)pauseclcecho off例2 采用貝葉斯正則化算法提高 bp 網(wǎng)絡(luò)的推廣能力。在本例中,我們采用兩種訓(xùn)練方法,即 l-m 優(yōu)化算法(trainlm)和貝葉斯正則化算法(trainbr),用
4、以訓(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 程序如下:close allclearecho onclc% newff生成一個新的前向神經(jīng)網(wǎng)絡(luò)% train對 bp 神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練% sim對 bp 神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真pause% 敲任意鍵開始clc% 定義訓(xùn)練樣本矢量% p 為輸入矢量p = -1:0.05:1;% t 為目標(biāo)矢量randn(s
5、eed,78341223); t = sin(2*pi*p)+0.1*randn(size(p);% 繪制樣本數(shù)據(jù)點(diǎn)plot(p,t,+);echo offhold on;plot(p,sin(2*pi*p),:);% 繪制不含噪聲的正弦曲線echo onclcpauseclc% 創(chuàng)建一個新的前向神經(jīng)網(wǎng)絡(luò)net=newff(minmax(p),20,1,tansig,purelin);pauseclcecho offclcdisp(1. l-m 優(yōu)化算法 trainlm); disp(2. 貝葉斯正則化算法 trainbr);choice=input(請選擇訓(xùn)練算法(1,2):);figure
6、(gcf);if(choice=1) echo on clc % 采用 l-m 優(yōu)化算法 trainlm net.trainfcn=trainlm; pause clc % 設(shè)置訓(xùn)練參數(shù) net.trainparam.epochs = 500; net.trainparam.goal = 1e-6; net=init(net); % 重新初始化 pause clcelseif(choice=2) echo on clc % 采用貝葉斯正則化算法 trainbr net.trainfcn=trainbr; pause clc % 設(shè)置訓(xùn)練參數(shù) net.trainparam.epochs = 50
7、0; randn(seed,192736547); net = init(net); % 重新初始化 pause clcend% 調(diào)用相應(yīng)算法訓(xùn)練 bp 網(wǎng)絡(luò)net,tr=train(net,p,t);pauseclc% 對 bp 網(wǎng)絡(luò)進(jìn)行仿真a = sim(net,p);% 計算仿真誤差e = t - a;mse=mse(e)pauseclc% 繪制匹配結(jié)果曲線close all;plot(p,a,p,t,+,p,sin(2*pi*p),:);pause;clcecho off通過采用兩種不同的訓(xùn)練算法,我們可以得到如圖 1和圖 2所示的兩種擬合結(jié)果。圖中的實線表示擬合曲線,虛線代表不含白噪
8、聲的正弦曲線,“”點(diǎn)為含有白噪聲的正弦樣本數(shù)據(jù)點(diǎn)。顯然,經(jīng) trainlm 函數(shù)訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)對樣本數(shù)據(jù)點(diǎn)實現(xiàn)了“過度匹配”,而經(jīng) trainbr 函數(shù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)對噪聲不敏感,具有較好的推廣能力。值得指出的是,在利用 trainbr 函數(shù)訓(xùn)練 bp 網(wǎng)絡(luò)時,若訓(xùn)練結(jié)果收斂,通常會給出提示信息“maximum mu reached”。此外,用戶還可以根據(jù) sse 和 ssw 的大小變化情況來判斷訓(xùn)練是否收斂:當(dāng) sse 和 ssw 的值在經(jīng)過若干步迭代后處于恒值時,則通常說明網(wǎng)絡(luò)訓(xùn)練收斂,此時可以停止訓(xùn)練。觀察trainbr 函數(shù)訓(xùn)練 bp 網(wǎng)絡(luò)的誤差變化曲線,可見,當(dāng)訓(xùn)練迭代至 320
9、步時,網(wǎng)絡(luò)訓(xùn)練收斂,此時 sse 和 ssw 均為恒值,當(dāng)前有效網(wǎng)絡(luò)的參數(shù)(有效權(quán)值和閾值)個數(shù)為 11.7973。例3 采用“提前停止”方法提高 bp 網(wǎng)絡(luò)的推廣能力。對于和例 2相同的問題,在本例中我們將采用訓(xùn)練函數(shù) traingdx 和“提前停止”相結(jié)合的方法來訓(xùn)練 bp 網(wǎng)絡(luò),以提高 bp 網(wǎng)絡(luò)的推廣能力。解:在利用“提前停止”方法時,首先應(yīng)分別定義訓(xùn)練樣本、驗證樣本或測試樣本,其中,驗證樣本是必不可少的。在本例中,我們只定義并使用驗證樣本,即有驗證樣本輸入矢量:val.p = -0.975:.05:0.975驗證樣本目標(biāo)矢量:val.t = sin(2*pi*val.p)+0.1*r
10、andn(size(val.p)值得注意的是,盡管“提前停止”方法可以和任何一種 bp 網(wǎng)絡(luò)訓(xùn)練函數(shù)一起使用,但是不適合同訓(xùn)練速度過快的算法聯(lián)合使用,比如 trainlm 函數(shù),所以本例中我們采用訓(xùn)練速度相對較慢的變學(xué)習(xí)速率算法 traingdx 函數(shù)作為訓(xùn)練函數(shù)。本例的 matlab 程序如下:close allclearecho onclc% newff生成一個新的前向神經(jīng)網(wǎng)絡(luò)% train對 bp 神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練% sim對 bp 神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真pause% 敲任意鍵開始clc% 定義訓(xùn)練樣本矢量% p 為輸入矢量p = -1:0.05:1;% t 為目標(biāo)矢量randn(seed,7
11、8341223);t = sin(2*pi*p)+0.1*randn(size(p);% 繪制訓(xùn)練樣本數(shù)據(jù)點(diǎn)plot(p,t,+);echo offhold on;plot(p,sin(2*pi*p),:); % 繪制不含噪聲的正弦曲線echo onclcpauseclc% 定義驗證樣本val.p = -0.975:0.05:0.975; % 驗證樣本的輸入矢量val.t = sin(2*pi*val.p)+0.1*randn(size(val.p); % 驗證樣本的目標(biāo)矢量pauseclc% 創(chuàng)建一個新的前向神經(jīng)網(wǎng)絡(luò)net=newff(minmax(p),5,1,tansig,purelin
12、,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% 對 bp 網(wǎng)絡(luò)進(jìn)行仿真a = sim(net,p);% 計算仿真誤差e = t - a;mse=mse(e)pauseclc% 繪制仿真擬合結(jié)果曲線close all;plot(p,a,p,t,+,p,sin(2*pi*p),:);pause;clcecho off下面給出了網(wǎng)絡(luò)的某次訓(xùn)練結(jié)果,可見,當(dāng)訓(xùn)練至第 136 步時,訓(xùn)練提前停止,此時的網(wǎng)
13、絡(luò)誤差為 0.0102565。給出了訓(xùn)練后的仿真數(shù)據(jù)擬合曲線,效果是相當(dāng)滿意的。net,tr=train(net,p,t,val);traingdx, epoch 0/500, mse 0.504647/0, gradient 2.1201/1e-006traingdx, epoch 25/500, mse 0.163593/0, gradient 0.384793/1e-006traingdx, epoch 50/500, mse 0.130259/0, gradient 0.158209/1e-006traingdx, epoch 75/500, mse 0.086869/0, gradi
14、ent 0.0883479/1e-006traingdx, epoch 100/500, mse 0.0492511/0, gradient 0.0387894/1e-006traingdx, epoch 125/500, mse 0.0110016/0, gradient 0.017242/1e-006traingdx, epoch 136/500, mse 0.0102565/0, gradient 0.01203/1e-006traingdx, validation stop.例3 用bp網(wǎng)絡(luò)估計膽固醇含量這是一個將神經(jīng)網(wǎng)絡(luò)用于醫(yī)療應(yīng)用的例子。我們設(shè)計一個器械,用于從血樣的光譜組成的測量
15、中得到血清的膽固醇含量級別,我們有261個病人的血樣值,包括21種波長的譜線的數(shù)據(jù),對于這些病人,我們得到了基于 光譜分類的膽固醇含量級別hdl,ldl,vldl。(1) 樣本數(shù)據(jù)的定義與預(yù)處理。choles_all.mat 文件中存儲了網(wǎng)絡(luò)訓(xùn)練所需要的全部樣本數(shù)據(jù)。利用 load 函數(shù)可以在工作空間中自動載入網(wǎng)絡(luò)訓(xùn)練所需的輸入數(shù)據(jù) p 和目標(biāo)數(shù)據(jù) t,即load choles_allsizeofp = size (p)sizeofp = 21 264sizeoft = size (t)sizeoft = 3 264可見,樣本集的大小為 264。為了提高神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效率,通常要對樣本數(shù)據(jù)作適
16、當(dāng)?shù)念A(yù)處理。首先,利用 prestd 函數(shù)對樣本數(shù)據(jù)作歸一化處理,使得歸一化后的輸入和目標(biāo)數(shù)據(jù)均服從正態(tài)分布,即 pn,meanp,stdp,tn,meant,stdt = prestd(p,t);然后,利用 prepca 函數(shù)對歸一化后的樣本數(shù)據(jù)進(jìn)行主元分析,從而消除樣本數(shù)據(jù)中的冗余成份,起到數(shù)據(jù)降維的目的。ptrans,transmat = prepca(pn,0.001);r,q = size(ptrans)r = 4 q = 264可見,主元分析之后的樣本數(shù)據(jù)維數(shù)被大大降低,輸入數(shù)據(jù)的維數(shù)由 21 變?yōu)?4。(2) 對訓(xùn)練樣本、驗證樣本和測試樣本進(jìn)行劃分。為了提高網(wǎng)絡(luò)的推廣能力和識別能
17、力,訓(xùn)練中采用“提前停止”的方法,因此,在訓(xùn)練之前,需要將上面處理后的樣本數(shù)據(jù)適當(dāng)劃分為訓(xùn)練樣本集、驗證樣本集和測試樣本集。(3) 網(wǎng)絡(luò)生成與訓(xùn)練。 選用兩層 bp 網(wǎng)絡(luò),其中網(wǎng)絡(luò)輸入維數(shù)為 4,輸出維數(shù)為 3,輸出值即為血清膽固醇的三個指標(biāo)值大小。網(wǎng)絡(luò)中間層神經(jīng)元數(shù)目預(yù)選為 5,傳遞函數(shù)類型選為 tansig 函數(shù),輸出層傳遞函數(shù)選為線性函數(shù) purelin,訓(xùn)練函數(shù)設(shè)為 trainlm。網(wǎng)絡(luò)的生成語句如下:net = newff(minmax(ptr),5 3,tansig purelin,trainlm);利用 train 函數(shù)對所生成的神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練結(jié)果如下:net,tr=tr
18、ain(net,ptr,ttr,val,test);見,網(wǎng)絡(luò)訓(xùn)練迭代至第 20 步時提前停止,這是由于驗證誤差已經(jīng)開始變大。利用下面語句可以繪制出訓(xùn)練誤差、驗證誤差和測試誤差的變化曲線,如圖 4.50 所示。由圖可見,驗證誤差和測試誤差的變化趨勢基本一致,說明樣本集的劃分基本合理。由訓(xùn)練誤差曲線可見,訓(xùn)練誤差結(jié)果也是比較滿意的。(4) 網(wǎng)絡(luò)仿真。 為了進(jìn)一步檢驗訓(xùn)練后網(wǎng)絡(luò)的性能,下面對訓(xùn)練結(jié)果作進(jìn)一步仿真分析。利用 postreg函數(shù)可以對網(wǎng)絡(luò)仿真的輸出結(jié)果和目標(biāo)輸出作線性回歸分析,并得到兩者的相關(guān)系數(shù),從而可以作為網(wǎng)絡(luò)訓(xùn)練結(jié)果優(yōu)劣的判別依據(jù)。仿真與線性回歸分析如下:an = sim(net,
19、ptrans);a = poststd(an,meant,stdt);for i=1:3 figure(i) m(i),b(i),r(i) = postreg(a(i,:),t(i,:);end%導(dǎo)入原始測量數(shù)據(jù)load choles_all;%對原始數(shù)據(jù)進(jìn)行規(guī)范化處理,prestd是對輸入數(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ù)分成幾個部分作為不同
20、用途四分已用于確證,四分一用于測試,二分一用于訓(xùn)練網(wǎng)絡(luò)iitst=2:4:q;iival=4:4:q;iitr=1:4:q 3:4:q;%vv是確證向量,.p是輸入,.t是輸出,vt是測試向量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è)計5個神經(jīng)元,由于需要得到的是3個目標(biāo),所以網(wǎng)絡(luò)需要有3個輸出net=newff(minmax(ptr),5 3,tansig purelin,trainlm);%訓(xùn)練網(wǎng)絡(luò)net.trainparam.show=5;net,tr=train(net,ptr,ttr,vv,vt);%繪出訓(xùn)練過程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2194-2025氧化鋅避雷器測試儀校準(zhǔn)規(guī)范
- LY/T 3350-2023展平竹砧板
- 2025至2030年中國半胱胺酒石酸鹽數(shù)據(jù)監(jiān)測研究報告
- 2025年軍隊文職人員招聘之軍隊文職管理學(xué)與服務(wù)通關(guān)題庫(附帶答案)
- 2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識強(qiáng)化訓(xùn)練試卷A卷附答案
- 模擬卷浙江寧波2025屆高三一模語文試題及答案
- (一模)哈三中2025屆高三第一次模擬考試 語文試題(含答案)
- 公司管理理念宣傳手冊(講座內(nèi)容)
- 中學(xué)生讀書勵志征文
- 化工圖標(biāo)知識培訓(xùn)課件
- 本科畢業(yè)生登記表自我鑒定范文(8篇)
- 腦梗塞的急救護(hù)理
- 讀后續(xù)寫+摯友離別:不舍與成長交織的瞬間+講義 高一上學(xué)期期中聯(lián)考英語試題
- 2024中華人民共和國學(xué)前教育法學(xué)習(xí)解讀課件
- 2024-2030年中國飾面板行業(yè)發(fā)展?fàn)顩r及前景趨勢研究報告
- 春季傳染病預(yù)防課件動態(tài)課件
- 山東省2024年夏季普通高中學(xué)業(yè)水平合格考試地理試題02(解析版)
- 2024智慧城市數(shù)據(jù)分類標(biāo)準(zhǔn)規(guī)范
- 礦山挖機(jī)合作協(xié)議書范文
- 2022新教材蘇教版科學(xué)5五年級下冊全冊教學(xué)設(shè)計
- PS技能試題(帶素材)
評論
0/150
提交評論