BP神經(jīng)網(wǎng)絡工具箱代碼_第1頁
BP神經(jīng)網(wǎng)絡工具箱代碼_第2頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

clearallclcinputNums=3;outputNums=3;?hideNums=10;?maxcount=20000;?samplenum=3;?precision=0.001;yyy=1.3;?alpha=0.01;a=0.5;error=zeros(1,maxcount+1);?errorp=zeros(1,samplenum);?v=rand(inputNums,hideNums);deltv=zeros(inputNums,hideNums);dv=zeros(inputNums,hideNums);?w=rand(hideNums,outputNums);?deltw=zeros(hideNums,outputNums);dw=zeros(hideNums,outputNums);?samplelist=[0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.3255];expectlist=[0.5435,0.422,-0.642;0.1,0.562,0.5675;-0.6464,-0.756,0.11];count=1;while(count<=maxcount)c=1;while(c<=samplenum)fork=1:outputNumsd(k)=expectlist(c,k);endfori=1:inputNumsx(i)=samplelist(c,i);end%Forward();forj=1:hideNumsnet=0.0;fori=1:inputNumsnet=net+x(i)*v(i,j);%輸入層到隱層的加權和工X(i)V(i)endy(j)=1/(1+exp(-net));%輸出層處理f(x)=1/(1+exp(-x))單極性sigmiod函數(shù)endfork=1:outputNumsnet=0.0;forj=1:hideNumsnet=net+y(j)*w(j,k);endifcount>=2&&error(count)-error(count+1)<=0.0001o(k)=1/(1+exp(-net)/yyy);%平坦區(qū)加大學習率elseo(k)=1/(1+exp(-net));%同上endend%BpError(c)反饋/修改;errortmp=0.0;fork=1:outputNumserrortmp=errortmp+(d(k)-o(k))A2;%第一組訓練后的誤差計算enderrorp(c)=0.5*errortmp;%誤差E=E(d(k)-o(k))A2*1/2%end%Backward();fork=1:outputNumsyitao(k)=(d(k)-o(k))*o(k)*(1-o(k));%輸入層誤差偏導字串5endforj=1:hideNumstem=0.0;fork=1:outputNumstem=tem+yitao(k)*w(j,k);%為了求隱層偏導,而計算的工endyitay(j)=tem*y(j)*(1-y(j));%隱層偏導end%調整各層權值forj=1:hideNumsfork=1:outputNumsdeltw(j,k)=alpha*yitao(k)*y(j);%權值w的調整量deltw(已乘學習率)w(j,k)=w(j,k)+deltw(j,k)+a*dw(j,k);%權值調整,這里的dw=dletw(t-1),實際是對BP算法的一個dw(j,k)=deltw(j,k);%改進措施--增加動量項目的是提高訓練速度endendfori=1:inputNumsforj=1:hideNumsdeltv(i,j)=alpha*yitay(j)*x(i);%同上deltwv(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);dv(i,j)=deltv(i,j);endendc=c+1;end%第二個while結束;表示一次BP訓練結束doubletmp;tmp=0.0;字串8fori=1:samplenumtmp=tmp+errorp(i)*errorp(i);%誤差求和endtmp=tmp/c;error(count)=sqrt(tmp);%誤差求均方根,即精度if(error(count)<precision)%另一個結束條件break;endcount=count+1;%訓練次數(shù)加1end%第一個while結束error(maxcount+1)=error(maxcount);p=1:count;pp=p/50;plot(pp,error(p),"-");%顯示誤差然后下面是研友wangleisxcc的程序基礎上,我把初始化網(wǎng)絡,訓練網(wǎng)絡,和網(wǎng)絡使用三個稍微集成后的一個新函數(shù)bpnet%簡單的BP神經(jīng)網(wǎng)絡集成,使用時直接調用bpnet就行%輸入的是p-作為訓練值的輸入%t-也是網(wǎng)絡的期望輸出結果%ynum-設定隱層點數(shù)一般取3~20;%maxnum-如果訓練一直達不到期望誤差之內,那么BP迭代的次數(shù)一般設為5000%ex-期望誤差,也就是訓練一小于這個誤差后結束迭代一般設為0.01%lr-學習率一般設為0.01%pp-使用p-t虛擬藍好的BP網(wǎng)絡來分類計算的向量,也就是嵌入二值水印的大組系數(shù)進行訓練然后得到二值序列%ww-輸出結果%注明:ynum,maxnum,ex,lr均是一個值;而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)絡訓練輸入,pp作為訓練好的網(wǎng)絡輸入計算,最后的WW作為pp經(jīng)過訓練好的BP訓練后的輸出functionww=bpnet(p,t,ynum,maxnum,ex,lr,pp)plot(p,t,"+");title("訓練向量");xlabel("P");ylabel("t");[w1,b1,w2,b2]=initff(p,ynum,"tansig",t,"purelin");%初始化含一個隱層的BP網(wǎng)絡zhen=25;%每迭代多少次更新顯示biglr=1.1;%學習慢時學習率(用于跳出平坦區(qū))litlr=0.7;%學習快時學習率(梯度下降過快時)a=0.7%動量項a大小(△W(t)=lr*X*人+a*AW(t-1))tp=[zhenmaxnumexlrbiglrlitlra1.04];%trainbpx[w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,"tansig",w2,b2,"purelin",p,t,tp);ww=simuff(pp,w1,b1,"tansig",w2,b2,"purelin");%ww就是調用結果下面是bpnet使用簡例:%bpnet舉例,因為BP網(wǎng)絡的權值初始化都是隨即生成,所以每次運行的狀態(tài)可能不一樣。%如果初始化的權值有利于訓練,那么可能很快能結束訓練,反之則反之字串6clearallclcfigurerandn("state",sum(100*clock))num1=5;%隱節(jié)點數(shù)num2=10000;%最大迭代次數(shù)a1=0.02;%期望誤差a2=0.05;%學習率test=randn(1,5)*0.5;%隨即生成5個測試值in=-1:.1:1;%訓練值expout=[-.9602-.5770-.0729.3771.6405.6600.4609.1336-.2013-.4344-.5000-.3930-.1647.0988.3072.3960.3449.1816-.0312-.2189-.3201

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論