《《BP神经网络实验报告》》由会员分享,可在线阅读,更多相关《《BP神经网络实验报告》(5页珍藏版)》请在金锄头文库上搜索。
1、江南大学物联网工程学院实验报告课程名称人工智能实验名称BP神经网络实验日期206-04-30班级计科1305姓名游思睿学号103043529实验报告虹实验名称2实验要求.实验环境4.实验步骤5.实验体会一、实验目的:两个输入a、(0以内的数),一个输出c,c=ab。换句话说就是教BP神经网络加法运算。二、实验内容:aa用来表示已经知道的数据样本的数量,也就是训练样本的数量。I表示对于每个样本有多少个输入变量;Out表示对于每个样本有多少个输出变量。Neuron表示神经元的数量,TranC来表示训练的次数。再来我们看对神经网络描述的数据定义,来看下面这张图里面的数据类型都是oub型。djntaI
2、n_outDaaOutNeurndnData存储Dt个样本,每个样本的n个输入。otDataOut存储Da个样本,每个样本的t个输出。我们用邻接表法来表示图1中的网络,wNeuronIn表示某个输入对某个神经元的权重,vOutNr来表示某个神经元对某个输出的权重;与之对应的保存它们两个修正量的数组dweuroI和dvOuturon。数组Nen记录的是神经元通过激活函数对外的输出,OtputDatOut存储P神经网络的输出。初始化主要是涉及两个方面的功能,一方面是对读取的训练样本数据进行归一化处理,归一化处理就是指的就是将数据转换成1之间。在B神经网络理论里面,并没有对这个进行要求,不过实际实践
3、过程中,归一化处理是不可或缺的。因为理论模型没考虑到,BP神经网络收敛的速率问题,一般来说神经元的输出对于0之间的数据非常敏感,归一化能够显著提高训练效率。可以用以下公式来对其进行归一化,其中加个常数A是为了防止出现0的情况(不能为分母)。y(inue+A)/(Mxlu-MinVae+A)另一方面,就是对神经元的权重进行初始化了,数据归一到了(0)之间,那么权重初始化为(-11)之间的数据,另夕卜对修正量赋值为0函数bckUdate(i)负责的是将预测输出的结果与样本真实的结果进行比对,然后对神经网络中涉及到的权重进行修正,也这是BP神经网络实现的关键所在。如何求到对于NernIn和OutNe
4、uo进行修正的误差量便是关键所在!误差修正量的求法在基本模型一文中数学分析部分有解答,具体问题具体分析,落实到我们设计的这个BP神经网络上来说,需要得到的是对wNeuoIn和vOutNeuron两个数据进行修正误差,误差量用数据结构dwNeurnIn和vOutNeuron来进行存储。那么来分析下这两个修正误差量是什么样的?推导的思路与基本模型中推导误差量的一致,这里仅列出对具体对于我们设计的BP神经网络中的数学推导过程:dE祟二事祟勺珈dw6E为j矿X.=dEdwkido-ki.J三、实验环境VS010四、实验步骤(对照截图具体说明,尽量详细)#ncludedio#ncludetie.h#in
5、lude#inclestdlibhdefieaa820#defieIn2#dfiOu#defineeuro5#efieTraiC200define0.2#deineB0.#dfinea0.#defieb.3doubed_inDaIn,_tDatut;dublewNeuronI,oNeurn,vOutNeun;ouleMaxinI,MininIn,MaxotOut,MinoutOut;oubletutDatOut;dubledvOtNon,wuronIn;dobee;vidwritTest()IL*fp1,fp2;doubler1,2;iti;rad(unsige)tme(NULL));if((
6、fp1=pen(:.txt”,w))NLL)pitf(annotpneinfien);exit(0);if(fpfopn(D:ut.tx”,)=N)printf(cnnotopntheutfilen);exit(0);fo(i=;a;+)r1rand()%1000/000;r2rand()10/0.0;fprintf(f1,lf%lf,r,2);frint(fp2,%lfn”,r1+r2);fose(f1);fcl(f2);voidreadDat()ILEfp1,*fp2;in,j;f(p=foe(D:in.xt,)=NULL)(rinf(cannotopenteifie);exit();fo
7、r(i=0;iData;i+)fo(=0;In;j+)fsanf(p1,lf,&d_nij);fcloe(1);i(2=fopen(D:outt”,r))=NUL)print(cannotopenteutflen);exi(0);for(=0;iat;i+)for(j=0;jOut;j+)fscanf(fp1,%f,&d_ouij);fcloe(p2);voiiBPeok()iti,j;o(=0;I;i+)Minin=axii=_in0i;fr(j=;ata;+)Mii=ainiiji?Mxini:d_i;MinnMinin_ij?Miini:d_ini;r(i=0;iOu;i+)Mt=aoi
8、=d_oti;for(=0;jd_outj?Mati:d_outji;MnoutiMinoutid_otji?Mii:d_otji;or(i0;iIn;i+)fo(j=;jaa;j+)d_ini(d_injiMinini1)(axni-Minin+1);for(i=;Out;i+)for(j=;j;j+)doutji(d_tjMinouti+)/(auti-Mnouti+1);r(0;iNeuron;+i)for(j=0;+j)wijrnd()*.0/RAND_AX-;dwj=0;for(i=;Neron;+i)for(=;Out;+)jirand()*2.0/RAND_AX-1;dvji=;
9、vcomputO(inar)it,j;oubleum,y;r(i=0;Neun;+i)su=0;fo(0;I;+j)s+=wj*divr;oi=1/(1+exp(-1su);or(;iOt;+i)su=;for(j=0;jNeurn;+j)su=vjj;OutputData=sm;vobcUpdate(ntvr)iti,j;duble;for(i0;iNeurn;+i)(t0;for(j=0;jOu;+j)(t+=(OutDataj-d_otvr)*ji;dvji=A*dvjiB(OtputDatj-d_ouva)*oi;ji-dvj;for(0;jI;+j)(dwij=a*di+b*oi*(
10、1-oi)d_invarj;wij-=dwj;dobleresult(dol1,dblevr2)(int,;douesm,;a=(var-Min0+)(Maxin-Minin0+1);var2(ar2Mnin1)/(MaxinMin1+1);r(i=0;uron;+i)(su=0;sum=wi*var1+w1*ar2;oi=1(+xp(-*um));u0;fr(j=;euron;+)u+=v0j*j;reuns*(Maxu0-Minut01)+Minu1;voidwritNeurn()(FLEp1;in,;f(f1=fpen(D:urn.txt”,w)=NUL)(rtf(anotopetene
11、urofilen);xit(0);fr(=;iNeurn;+i)for(j=0;jn;+j)(fpritf(fp1,%lf”,j);fprinf(fp,n);fo(i=0;No;+)fo(j=0;jOut;+)(fprint(f1,%lf,ji);close(fp1);vidtrainetwrk()it,c=0,j;de=0;fo(i0;Da;)ompO(i);fo(j=;jOut;+j)efbs(OuputDaajutj)/d_outj);bakUpate();printf(%d%fn,e/Daa);c+;whie(0.01);ntmain(itargc,chrconst*rgv)wrteTst();reata();iitPNwk();traiNetwo();pri(%l”,resut(6,);it(%lfn”,resut(.1,7);printf(%lfn”,rsul(4.3,8);witNeuron();retur0;mC:Wnosste325 0,0115226 0