欢迎来到天天文库
浏览记录
ID:47421303
大小:23.27 KB
页数:12页
时间:2019-09-13
《bp神经网络详细步骤C#实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem;usingSystem.IO;usingSystem.Text;namespaceBpANNet{//////BpNet的摘要说明。///publicclassBpNet{publicintinNum;//输入节点数inthideNum;//隐层节点数publicintoutNum;//输
2、出层节点数publicintsampleNum;//样本总数RandomR;double[]x;//输入节点的输入数据double[]x1;//隐层节点的输出double[]x2;//输出节点的输出double[]o1;//隐层的输入double[]o2;//输出层的输入publicdouble[,]w;//权值矩阵w,这是输入层与隐藏层之间的权值矩阵publicdouble[,]v;//权值矩阵V,这是隐藏层与输出层之间的权值矩阵publicdouble[,]dw;//权值矩阵wpublicdoubl
3、e[,]dv;//权值矩阵Vpublicdoublerate;//学习率publicdouble[]b1;//隐层阈值矩阵publicdouble[]b2;//输出层阈值矩阵publicdouble[]db1;//隐层阈值矩阵publicdouble[]db2;//输出层阈值矩阵double[]pp;//隐藏层的误差double[]qq;//输出层的误差double[]yd;//输出层的教师数据,所谓教师数据就是实际数据而已!publicdoublee;//均方误差doublein_rate;//归一化
4、比例系数//用于确定隐藏层的神经细胞数publicintcomputeHideNum(intm,intn){doubles=Math.Sqrt(0.43*m*n+0.12*n*n+2.54*m+0.77*n+0.35)+0.51;intss=Convert.ToInt32(s);return((s-(double)ss)>0.5)?ss+1:ss;}publicBpNet(double[,]p,double[,]t){//构造函数逻辑R=newRandom();this.inNum=p.GetLengt
5、h(1);this.outNum=t.GetLength(1);this.hideNum=computeHideNum(inNum,outNum);//this.hideNum=18;this.sampleNum=p.GetLength(0);Console.WriteLine("输入节点数目:"+inNum);Console.WriteLine("隐层节点数目:"+hideNum);Console.WriteLine("输出层节点数目:"+outNum);Console.ReadLine();//将这
6、些矩阵规定好矩阵大小x=newdouble[inNum];x1=newdouble[hideNum];x2=newdouble[outNum];o1=newdouble[hideNum];o2=newdouble[outNum];w=newdouble[inNum,hideNum];//权值矩阵w,这是输入层与隐藏层之间的权值矩阵v=newdouble[hideNum,outNum];dw=newdouble[inNum,hideNum];dv=newdouble[hideNum,outNum];//阈
7、值b1=newdouble[hideNum];b2=newdouble[outNum];db1=newdouble[hideNum];db2=newdouble[outNum];//误差pp=newdouble[hideNum];//隐藏层的误差qq=newdouble[outNum];//输出层的误差yd=newdouble[outNum];//输出层的教师数据//初始化wfor(inti=0;i8、个介于0.0和1.0之间的随机数。w[i,j]=(R.NextDouble()*2-1.0)/2;}}//初始化vfor(inti=0;i
8、个介于0.0和1.0之间的随机数。w[i,j]=(R.NextDouble()*2-1.0)/2;}}//初始化vfor(inti=0;i
此文档下载收益归作者所有