BP神經(jīng)網(wǎng)絡(luò)MATLAB工具箱和MATLAB實(shí)現(xiàn)使用實(shí)例_第1頁
BP神經(jīng)網(wǎng)絡(luò)MATLAB工具箱和MATLAB實(shí)現(xiàn)使用實(shí)例_第2頁
BP神經(jīng)網(wǎng)絡(luò)MATLAB工具箱和MATLAB實(shí)現(xiàn)使用實(shí)例_第3頁
BP神經(jīng)網(wǎng)絡(luò)MATLAB工具箱和MATLAB實(shí)現(xiàn)使用實(shí)例_第4頁
BP神經(jīng)網(wǎng)絡(luò)MATLAB工具箱和MATLAB實(shí)現(xiàn)使用實(shí)例_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、BP神經(jīng)網(wǎng)絡(luò)matlab工具箱和matlab實(shí)現(xiàn)使用實(shí)例經(jīng)過最近一段時(shí)間的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí),終于能初步使用matlab實(shí)現(xiàn)BP網(wǎng)絡(luò)仿真試驗(yàn)。這里特別感謝研友sistor2004的帖子自己編的 BP算法(工具:matlab )和研友 wangleisxcc的帖子用 C+ , Matlab ,Fortran實(shí)現(xiàn)的BP算法前者幫助我對BP算法有了更明確的認(rèn)識,后者讓我對 matlab 下BP函數(shù)的使用有了初步了解。因?yàn)樗麄儼l(fā)的帖子都沒有加注釋,對我等新手閱讀時(shí)有一定困難, 所以我把sistor2004發(fā)的程序稍加修改后加注了詳細(xì)解釋,方便新手閱讀。%嚴(yán)格按照BP網(wǎng)絡(luò)計(jì)算公式來設(shè)計(jì)的一個(gè)matlab程序,

2、對BP網(wǎng)絡(luò)進(jìn)行了優(yōu)化設(shè)計(jì)%yyy,即在o(k)計(jì)算公式時(shí),當(dāng)網(wǎng)絡(luò)進(jìn)入平坦區(qū)時(shí)(<0.0001)學(xué)習(xí)率加大,岀來后學(xué)習(xí)率又還原%v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);動(dòng)量項(xiàng)clear allclcinputNums=3; %輸入層節(jié)點(diǎn) outputNums=3; %輸岀層節(jié)點(diǎn) hideNums=10; %隱層節(jié)點(diǎn)數(shù) maxcou nt=20000; %最大迭代次數(shù) samplenum=3; %一個(gè)計(jì)數(shù)器,無意義 precision=0.001; %預(yù)設(shè)精度yyy=1.3; %yyy是幫助網(wǎng)絡(luò)加速走岀平坦區(qū)alpha=0.01; %學(xué)習(xí)率設(shè)定值a=0.5; %

3、BP優(yōu)化算法的一個(gè)設(shè)定值,對上組訓(xùn)練的調(diào)整值按比例修改字串9error=zeros(1,maxcount+1); %error數(shù)組初始化;目的是預(yù)分配內(nèi)存空間 errorp=zeros(1,sample num);% 同上v=rand(inputNums,hideNums);%3*10;v初始化為一個(gè)3*10的隨機(jī)歸一矩陣;v表輸入層到隱層的值deltv=zeros(inputNums,hideNums); %3*10;內(nèi)存空間預(yù)分配dv=zeros( in putNums,hideNums);%3*10;w=rand(hideNums,outputNums); %10*3;同 V deltw

4、=zeros(hideNums,outputNums);%10*3 dw=zeros(hideNums,outputNums); %10*3samplelist=0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.3255;%3*3;指定輸入值3*3(實(shí)為3個(gè)向量)expectlist=0.5435,0.422,-0.642;0.1,0.562,0.5675;-0.6464,-0.756,0.11;%3*3;期望輸岀值 3*3(實(shí)為3個(gè)向量),有導(dǎo)師的監(jiān)督學(xué)習(xí)cou nt=1;while (count<=maxcount) %

5、結(jié)束條件 1 迭代 20000 次c=1;while (c<=samplenum)for k=1:outputNumsd(k)=expectlist(c,k); %獲得期望輸岀的向量,d(1:3)表示一個(gè)期望向量內(nèi)的值endfor i=1:inputNumsx(i)=samplelist(c,i); %獲得輸入的向量(數(shù)據(jù)),x(1:3)表一個(gè)訓(xùn)練向量字串 4end%Forward();for j=1:hideNumsnet=0.0;for i=1:inputNumsnet=net+x(i)*v(i,j);%輸入層到隱層的加權(quán)和E X(i)V(i)endy(j)=1/(1+exp(-ne

6、t); %輸岀層處理 f(x)=1/(1+exp(-x)單極性 sigmiod 函數(shù) endfor k=1:outputNumsnet=0.0;for j=1:hideNumsnet=n et+y(j)*w(j,k);endif cou nt>=2&&error(cou nt)-error(cou nt+1)<=0.0001o(k)=1/(1+exp(-net)/yyy); % 平坦區(qū)加大學(xué)習(xí)率else o(k)=1/(1+exp(-net); % 同上endend%BpError(c)反饋/修改;errortmp=0.0;for k=1:outputNumserr

7、ortmp=errortmp+(d(k)-o(k)A2;% 第一組訓(xùn)練后的誤差計(jì)算enderrorp(c)=0.5*errortmp; % 誤差 E=E (d(k)-o(k)A2 * 1/2%e nd%Backward();for k=1:outputNumsyitao(k)=(d(k)-o(k)*o(k)*(1-o(k);%輸入層誤差偏導(dǎo)字串 5endfor j=1:hideNumstem=0.0;for k=1:outputNumstem=tem+yitao(k)*w(j,k);%為了求隱層偏導(dǎo),而計(jì)算的Eendyitaya)=tem*y(j)*(1-y(j); %隱層偏導(dǎo)end%調(diào)整各層

8、權(quán)值for j=1:hideNumsfor k=1:outputNumsdeltw(j,k)=alpha*yitao(k)*y(j); %權(quán)值 w 的調(diào)整量 deltw(已乘學(xué)習(xí)率) w(j,k)=w(j,k)+deltwa,k)+a*dw(j,k);%權(quán)值調(diào)整,這里的 dw=dletw(t-1),實(shí)際是對 BP 算法的一個(gè)dw(j,k)=deltw(j,k); %改進(jìn)措施-增加動(dòng)量項(xiàng)目的是提高訓(xùn)練速度endendfor i=1:inputNumsfor j=1:hideNumsdeltv(i,j)=alpha*yitay(j)*x(i); % 同上 deltwv(i,j)=v(i,j)+de

9、ltv(i,j)+a*dv(i,j);dv(i,j)=deltv(i,j);endendc=c+1;end%第二個(gè)while結(jié)束;表示一次 BP訓(xùn)練結(jié)束double tmp;tmp=0.0;字串 8for i=1:samplenumtmp=tmp+errorp(i)*errorp(i); %誤差求和endtmp=tmp/c;error(count)=sqrt(tmp);%誤差求均方根,即精度if (error(cou nt)vprecisi on)% 另一個(gè)結(jié)束條件break;endcount=count+1;% 訓(xùn)練次數(shù)加 1end%第一個(gè)while結(jié)束error(maxcou nt+1)=

10、error(maxcou nt);p=1:cou nt;pp=p/50;plot(pp,error(p),"-"); %顯示誤差然后下面是研友wangleisxcc的程序基礎(chǔ)上,我把初始化網(wǎng)絡(luò),訓(xùn)練網(wǎng)絡(luò),和網(wǎng)絡(luò)使用三個(gè)稍微集成 后的一個(gè)新函數(shù)bp net%簡單的BP神經(jīng)網(wǎng)絡(luò)集成,使用時(shí)直接調(diào)用bp net就行%輸入的是p-作為訓(xùn)練值的輸入% t-也是網(wǎng)絡(luò)的期望輸岀結(jié)果% ynum-設(shè)定隱層點(diǎn)數(shù) 一般取320;% max num-如果訓(xùn)練一直達(dá)不到期望誤差之內(nèi),那么BP迭代的次數(shù) 一般設(shè)為5000% ex-期望誤差,也就是訓(xùn)練一小于這個(gè)誤差后結(jié)束迭代一般設(shè)為0.01% lr-

11、學(xué)習(xí)率一般設(shè)為0.01% pp-使用p-t虛擬藍(lán)好的BP網(wǎng)絡(luò)來分類計(jì)算的向量,也就是嵌入二值水印的大組系數(shù)進(jìn)行訓(xùn)練然后 得到二值序列% ww-輸岀結(jié)果% 注明:ynum,maxnum,ex,lr 均是一個(gè)值;而 p,t,pp,ww 均可以為向量 字串1%比如p是m*n的n維行向量,t那么為m*k的k維行向量,pp為o*i的i維行向量,ww為o* k的 k維行向量%p,t作為網(wǎng)絡(luò)訓(xùn)練輸入,pp作為訓(xùn)練好的網(wǎng)絡(luò)輸入計(jì)算,最后的ww作為pp經(jīng)過訓(xùn)練好的BP訓(xùn)練 后的輸岀function ww=bpnet(p,t,ynum,maxnum,ex,lr,pp) plot(p,t,"+"

12、);title(“訓(xùn)練向量");xlabel("P");ylabel("t");w1,b1,w2,b2=initff(p,ynum,"tansig",t,"purelin");%初始化含一個(gè)隱層的 BP 網(wǎng)絡(luò)zhen=25; %每迭代多少次更新顯示 biglr=1.1; %學(xué)習(xí)慢時(shí)學(xué)習(xí)率(用于跳岀平坦區(qū)) litlr=0.7; %學(xué)習(xí)快時(shí)學(xué)習(xí)率(梯度下降過快時(shí))a=0.7 %動(dòng)量項(xiàng) a 大小( W(t)=lr*X* +a* W(t-1)tp=zhen maxnum ex lr biglr litlr a

13、1.04; %trainbpx w1,b1,w2,b2,ep,tr=tra in bpx(w1,b1,"ta nsig",w2,b2,"pureli n",p,t,tp);ww=simuff(pp,w1,b1,"tansig",w2,b2,"purelin"); %ww 就是調(diào)用結(jié)果下面是bpnet使用簡例:%bpnet舉例,因?yàn)锽P網(wǎng)絡(luò)的權(quán)值初始化都是隨即生成,所以每次運(yùn)行的狀態(tài)可能不一樣。 %如果初始化的權(quán)值有利于訓(xùn)練,那么可能很快能結(jié)束訓(xùn)練,反之則反之字串6clear allclcfigurerandn ("state",sum(100*clock)num1=5; %隱節(jié)點(diǎn)數(shù)num2=10000; %最大迭代次數(shù)a1=0.02; %期望誤差a2=0.05; %學(xué)習(xí)率test=randn(1,5)*0.5;%隨即生成5個(gè)測試值in=-1:.1:1; %訓(xùn)練值expout=-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 .1336 -.2013 -.4344 -.5000 -.3930-.1647 .0988 .3072 .3960 .3449 .1816 -.0312 -.2189

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論