具体代码我这已经没了,因为过了好久了,你可以百度一下 MATLAB 神经网络算法代码。第二种:直接使用MATLABMATLAB带有神经网络工具箱,在控制台输入命令即可打开。
神经网络结构如下图所示,最左边的是输入层,最右边的是输出层,中间是多个隐含层,对于隐含层和输出层的每个神经节点,都是由上一层节点乘以其权重累加得到,标上“+1”的圆圈为截距项b,对输入层外每个节点:Y=w0*x0+w1*x1+...+wn*xn+b,由此我们可以知道神经网络相当于一个多层逻辑回归的结构。
#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 sample[41][4]={{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,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,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},{1,3,2,7.219},{1,5,3,5.724}};double w[4][10][10],wc[4][10][10],b[4][10],bc[4][10];double o[4][10],netin[4][10],d[4][10],differ;//单个样本的误差double is; //全体样本均方差int count,a;void netout(int m, int n);//计算网络隐含层和输出层的输出void 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);//清除网络权值变化量wcvoid clearbc(int m,int n);//清除网络阀值变化量bcvoid initialw(void);//初始化NN网络权值Wvoid initialb(void); //初始化NN网络阀值void calculdiffer(void);//计算NN网络单个样本误差void calculis(void);//计算NN网络全体样本误差void trainNN(void);//训练NN网络/*计算NN网络隐含层和输出层的输出 */void netout(int m,int n){int i,j,k;//隐含层各节点的的输出for (j=1,i=2;j。