如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
voidCBP_TView::OnBpLearn(){Simu();//获得网络输入out0[i][0]和参考输出targ[i][0]Random_w();//随机获得网络初始权值BeginWaitCursor();doublesum,dw;for(q=0;q<nRepeat;q++)//nRepeat:最大重复次数{for(p=0;p<nLp;p++)//nLp=st/dt,Simu()中得到{Work(p);//网络输出计算//计算反向传播的deltafor(i=0;i<nOut;i++)//输出层delta=(targ-y)*y*(1-y)delta2[p][i]=(targ[p][i]-out2[p][i])*out2[p][i]*(1.0-out2[p][i]);for(inth=0;h<nHide;h++){//隐层(1yh)yhoutwhosum=0;for(j=0;j<nOut;j++)sum+=delta2[p][j]*w2[j][h];delta1[p][h]=sum*out1[p][h]*(1.0-out1[p][h]);}}//调整隐层-输出层权值for(j=0;j<nOut;j++){sum=0;for(p=0;p<nLp;p++)sum+=delta2[p][j];//得到每个输出节点的偏置的权值w(nHide),//eta:学习率,alpha:动量因子dw=eta*sum+alpha*delw2[j][nHide];//w2[j][nHide]+=dw;//delw2[j][nHide]=dw;////得到其它的权值for(h=0;h<nHide;h++){sum=0;for(p=0;p<nLp;p++)sum+=delta2[p][j]*out1[p][h];dw=eta*sum+alpha*delw2[j][h];w2[j][h]+=dw;delw2[j][h]=dw;}}//调整输入层-隐层权值for(h=0;h<nHide;h++){sum=0;for(p=0;p<nLp;p++)sum+=delta1[p][h];//得到每个隐层节点的偏置的权值w(nIn),//eta:学习率,alpha:动量因子dw=eta*sum+alpha*delw1[h][nIn];w1[h][nIn]+=dw;delw1[h][nIn]=dw;//得到其它的权值for(i=0;i<nIn;i++){sum=0;for(p=0;p<nLp;p++)sum+=delta1[p][h]*out0[p][i];dw=eta*sum+alpha*delw1[h][i];w1[h][i]+=dw;delw1[h][i]=dw;}}//计算均方差error[q]=0;for(p=0;p<nLp;p++){for(j=0;j<nOut;j++)error[q]+=(targ[p][j]-out2[p][j])*(targ[p][j]-out2[p][j]);}error[q]=0.5*error[q]/(nLp*nOut);if(error[q]<ErrorLevel){MessageBeep((WORD)-1);MessageBox("OK");break;}}EndWaitCursor();nDisType=2;Invalidate();}voidCBP_TView::Work(intp){//网络输出计算doublesum;for(i=0;i<nHide;i++){sum=w1[i][nIn]*1.0;//偏置处理for(j=0;j<nIn;j++)sum+=w1[i][j]*out0[p][j];out1[p][i]=1.0/(1.0+exp(-sum));//S型函数}for(i=0;i<nOut;i++){sum=w2[i][nHide]*1.0;//偏置处理for(j=0;j<nHide;j++)sum+=w2[i][j]*out1[p][j];out2[p][i]=1.0/(1.0+exp(-sum));//S型函数}}voidCBP_TView::Random_w(){//随机获得网络初始权值longrd=568731L;intp,i,j,h,rand;for(h=0;h<nHide;h++)for(i=0;i<=nIn;i++){rd=15625L*rd+22221L;rand=(rd>>16)&0x7FFF;w1[h][i]=rand/pow(2.0,15.0)-.0;delw