2022年C++实现的BP神经网络代码 .pdf
《2022年C++实现的BP神经网络代码 .pdf》由会员分享,可在线阅读,更多相关《2022年C++实现的BP神经网络代码 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#pragma hdrstop #include #include const A=30.0; const B=10.0; const MAX=500;/最大训练次数const COEF=0.0035; / 网络的学习效率const BCOEF=0.001;/ 网络的阀值调整效率const ERROR=0.002; / 网络训练中的允许误差const ACCURACY=0.0005;/ 网络要求精度double sample414=0,0,0,0,5,1,4,19.020,5,3,3,14.150, 5,5,2,14.360,5,3,3,14.150,5,3,2,15.390, 5,3,2,1
2、5.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,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
3、.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, 1,3,2,7.219,1,5,3,5.724; double w41010,wc41010,b410,bc410; double o410,netin410,d410,differ;/单个样本的误差double is; / 全体样本均方差int count,a; void netout(int m, int n);/ 计算网络隐含层和输出层的输出void
4、 calculd(int m,int n); /计算网络的反向传播误差void calcalwc(int m,int n);/计算网络权值的调整量void calcaulbc(int m,int n); /计算网络阀值的调整量void changew(int m,int n); / 调整网络权值void changeb(int m,int n);/ 调整网络阀值void clearwc(int m,int n);/ 清除网络权值变化量wc void clearbc(int m,int n);/ 清除网络阀值变化量bc- void initialw(void);/初始化 NN 网络权值 W vo
5、id initialb(void); /初始化 NN 网络阀值void calculdiffer(void);/计算 NN 网络单个样本误差void calculis(void);/ 计算 NN 网络全体样本误差void trainNN(void);/训练 NN 网络/- -/ /- -/ /- -/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - /*计算 NN 网络隐含层和输出层的输出*/ void netout(int m
6、,int n) int i,j,k; /隐含层各节点的的输出for (j=1,i=2;j=m;j+) /m为隐含层节点个数 netinij=0.0; for(k=1;k=3;k+)/隐含层的每个节点均有三个输入变量netinij=netinij+oi-1k*wikj; netinij=netinij-bij; oij=A/(1+exp(-netinij/B); /- -/ /- -/ /- -/ /输出层各节点的输出for (j=1,i=3;j=n;j+) netinij=0.0; for (k=1;k=m;k+) netinij=netinij+oi-1k*wikj; netinij=net
7、inij-bij; oij=A/(1+exp(-netinij/B) ; /- -/ /- -/ /- -/ /*计算 NN 网络的反向传播误差*/ void calculd(int m,int n) int i,j,k; double t; a=count-1; d31=(o31-samplea3)*(A/B)*exp(-netin31/B)/pow(1+exp(-netin31/B),2); /隐含层的误差名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - -
8、 - - - - - - - for (j=1,i=2;j=m;j+) t=0.00; for (k=1;k=n;k+) t=t+wi+1jk*di+1k; dij=t*(A/B)*exp(-netinij/B)/pow(1+exp(-netinij/B),2); /*计算网络权值W 的调整量 */ void calculwc(int m,int n) int i,j,k; / 输出层(第三层)与隐含层(第二层)之间的连接权值的调整for (i=1,k=3;i=m;i+) for (j=1;j=n;j+) wckij=-COEF*dkj*ok-1i+0.5*wckij; / printf(n)
9、; /隐含层与输入层之间的连接权值的调整for (i=1,k=2;i=m;i+) for (j=1;j=m;j+) wckij=-COEF*dkj*ok-1i+0.5*wckij; /printf(n); /- -/ /- -/ /- -/ /*计算网络阀值的调整量*/ void calculbc(int m,int n) int j; for (j=1;j=m;j+) bc2j=BCOEF*d2j; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C+实现的BP神经网络代码 2022 C+ 实现 BP 神经网络 代码
限制150内