资源描述:
《c++神经网络实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#pragmahdrstop #include #include constA=30.0; constB=10.0; constMAX=500; //最大训练次数 constCOEF=0.0035;//网络的学习效率 constBCOEF=0.001;//网络的阀值调整效率 constERROR=0.002 ;//网络训练中的允许误差 constACCURACY=0.0005;//网络要求精度 doublesample[41][4]={{0,0,0,0},{5,1,4,19.020
2、},{5,3,3,14.150}, {5,5,2,14.360},{5,3,3,14.150},{5,3,2,15.390}, {5,3,2,15.390},{5,5,1,19.680},{5,1,2,21.060}, {5,3,3,14.150},{5,5,4,12.680},{5,5,2,14.360}, {5,1,3,19.610},{5,3,4,13.650},{5,5,5,12.430}, {5,1,4,19.020},{5,1,4,19.020},{5,3,5,13.390}, {5,5,4,12.680},{5,1,3,19.610},{5
3、,3,2,15.390}, {1,3,1,11.110},{1,5,2,6.521},{1,1,3,10.190}, {1,3,4,6.043},{1,5,5,5.242},{1,5,3,5.724}, {1,1,4,9.766},{1,3,5,5.870},{1,5,4,5.406}, {1,1,3,10.190},{1,1,5,9.545},{1,3,4,6.043}, {1,5,3,5.724},{1,1,2,11.250},{1,3,1,11.110}, {1,3,3,6.380},{1,5,2,6.521},{1,1,1,16.000}, {
4、1,3,2,7.219},{1,5,3,5.724}}; doublew[4][10][10],wc[4][10][10],b[4][10],bc[4][10]; doubleo[4][10],netin[4][10],d[4][10],differ;//单个样本的误差 doubleis;//全体样本均方差 intcount,a; voidnetout(intm,intn);//计算网络隐含层和输出层的输出 voidcalculd(intm,intn);//计算网络的反向传播误差 voidcalcalwc(intm,intn);//计算网络权值的调整量
5、 voidcalcaulbc(intm,intn);//计算网络阀值的调整量 voidchangew(intm,intn);//调整网络权值 voidchangeb(intm,intn);//调整网络阀值 voidclearwc(intm,intn);//清除网络权值变化量wc voidclearbc(intm,intn);//清除网络阀值变化量bc voidinitialw(void);//初始化NN网络权值W voidinitialb(void);//初始化NN网络阀值 voidcalculdiffer(void);//计算NN网络单个样本误差
6、 voidcalculis(void);//计算NN网络全体样本误差 voidtrainNN(void);//训练NN网络 /*计算NN网络隐含层和输出层的输出*/ voidnetout(intm,intn) { inti,j,k; //隐含层各节点的的输出 for(j=1,i=2;j<=m;j++)//m为隐含层节点个数 { netin[i][j]=0.0; for(k=1;k<=3;k++)//隐含层的每个节点均有三个输入变量 netin[i][j]=netin[i][j]+o[i-1][k]*w[i][k][j]; netin[i][j
7、]=netin[i][j]-b[i][j]; o[i][j]=A/(1+exp(-netin[i][j]/B)); } //输出层各节点的输出 for(j=1,i=3;j<=n;j++) { netin[i][j]=0.0; for(k=1;k<=m;k++) netin[i][j]=netin[i][j]+o[i-1][k]*w[i][k][j]; netin[i][j]=netin[i][j]-b[i][j]; o[i][j]=A/(1+exp(-netin[i][j]/B)); } } /*计算NN网络的反向传播误差*/ voi