BP神经网络实例含源码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1BP神经网络算法实现一:关于BP网络BP(BackPropagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。BP网络主要应用于以下方面:函数逼近、模式识别和分类、数据压缩。BP神经网络有较强的泛化性能,使网络平滑的逼近函数,能合理的响应被训练以外的输入。同时,BP网络又有自己的限制与不足,主要表现在:需要较长的训练时间、网络训练的结果可能使得权值逼近局部最优、训练数据范围外的数据泛化能力较差。为了避免训练陷入局部最优解,本程序采用改进的BP网络训练,既加入动量因子,使得网络在最优解附近有一定的震荡,跳出局部最优的范围。BP网络训练中学习速率与动量因子的选择很重要,在后面的内容中将进行详细的讨论。二:训练的函数程序中训练的函数为一个三输入一输出的非线性函数,如下所示:3122sin()xyxxe,xR网络结构为:3—5—1三:程序及相关界面(VB)1主界面2代码:PrivateSubCommand1_Click()form2.Visible=FalseForm3.Visible=TrueEndSubPrivateSubCommand2_Click()form2.Visible=FalseForm1.Visible=TrueEndSubPrivateSubCommand3_Click()form2.Visible=FalseForm4.Visible=TrueEndSubPrivateSubCommand4_Click()form2.Visible=FalseForm5.Visible=TrueEndSubPrivateSubCommand5_Click()EndEndSubPrivateSubForm_Load()Command3.Enabled=FalseCommand4.Enabled=FalseEndSub2查看网络结构3代码:PrivateSubCommand1_Click()Form3.Visible=Falseform2.Visible=TrueEndSub3网络训练代码:4PrivateSubCommand1_Click()Form1.Visible=Falseform2.Visible=TrueEndSubPrivateSubCommand2_Click()Label2.Caption=样本训练中…DimiAsInteger,jAsInteger,kAsInteger,pAsInteger,sAsSingleDimMaxx(1To3)AsSingle,Minx(1To3)AsSingle,Meanx(1To3)AsSingleDimx(1To3,1To100)AsSingle,sumx(1To3)AsSingle,TempAsSingleDimDatex(1To3,1To100)AsSingle,inputx(1To3)AsSingle,outputx(1To100)AsSingleDimEx(1To100)AsSingleDimtime(1To5000)AsInteger,cishu(1To100)AsIntegerDimDv_1(1To5,1To3)AsSingle,Dw_1(1To5)AsSingleDimRAsSingleDimMaxdAsSingle,MindAsSingleDims1(1To5)AsSingle,y1(1To5,1To100)AsSingle,s2AsSingle,y2(1To100)AsSingleDimdeltW(1To100)AsSingle,deltV(1To5,1To100)AsSingleDimDw(1To5)AsSingle,Dv(1To5,1To3)AsSingleDimMyIn(1To3)AsSingleDimErrorx(1To5000)AsSingleRandomizeFori=1To3Maxx(i)=0Minx(i)=0Meanx(i)=0NextiTemp=0Maxd=0Mind=0Fori=1To5Forj=1To3Dv_1(i,j)=0v(i,j)=2*Rnd-1NextjDw_1(i)=0w(i)=2*Rnd-1NextiForj=1To3Fori=1To100x(j,i)=4*(2*Rnd-1)Nextisumx(j)=0Nextj'求最值Forj=1To3Fori=1To100Ifx(j,i)=Maxx(j)ThenMaxx(j)=x(j,i)EndIfIfx(j,i)=Minx(j)ThenMinx(j)=x(j,i)Temp=Temp+x(j,i)EndIfNextisumx(j)=Temp5Temp=0Meanx(j)=sumx(j)/100Nextj'归一化Forj=1To3Fori=1To100IfMaxx(j)-x(j,i)=x(j,i)-Minx(j)ThenR=Maxx(j)-x(j,i)ElseR=x(j,i)-Minx(j)EndIfDatex(j,i)=(x(j,i)-Meanx(j))/RNextiNextj'期望输出Fori=1To100Forj=1To3inputx(j)=Datex(j,i)Nextjoutputx(i)=2*(inputx(1)+Sin(inputx(2))+Exp(inputx(3)))Nexti'输出归一化Fori=1To100IfMaxd=outputx(i)ThenMaxd=outputx(i)EndIfIfMind=outputx(i)ThenMind=outputx(i)EndIfNextiFori=1To100Ex(i)=(outputx(i)-Mind)/(Maxd-Mind)Nexti'训练Fors=1To5000Step1time(s)=sForp=1To100cishu(p)=pFori=1To3MyIn(i)=Datex(i,p)NextiFori=1To5Forj=1To3Temp=Temp+v(i,j)*MyIn(j)Nextjs1(i)=TempTemp=0NextiFori=1To5y1(i,p)=1/(1+Exp(-s1(i)))NextiFori=1To3Temp=y1(i,p)*w(i)+TempNextis2=TempTemp=0y2(p)=1/(1+Exp(-s2))deltW(p)=(Ex(p)-y2(p))*y2(p)*(1-y2(p))6Fori=1To5deltV(i,p)=deltW(p)*w(i)*y1(i,p)*(1-y1(i,p))NextiNextp'误差Fori=1To100Temp=Temp+(Ex(i)-y2(i))^2NextiErrorx(s)=TempTemp=0'调整权值Fori=1To5Dw_1(i)=Dw(i)NextiFori=1To5Forj=1To100Temp=Temp+deltW(j)*y1(i,j)NextjDw(i)=TempTemp=0NextiFori=1To5Forj=1To3Dv_1(i,j)=Dv(i,j)NextjNextiFori=1To5Forj=1To3Fork=1To100Temp=Temp+deltV(i,k)*Datex(j,k)NextkDv(i,j)=TempTemp=0NextjNextiFori=1To5w(i)=0.2*Dw(i)+0.2*Dw_1(i)+w(i)NextiFori=1To3Forj=1To5v(j,i)=0.2*Dv(j,i)+0.2*Dv_1(j,i)+v(j,i)NextjNexti'画图Picture1.ClsPicture1.ScaleTop=1.5Picture1.ScaleHeight=-2Picture1.ScaleLeft=-10Picture1.ScaleWidth=120Picture1.Line(-9,0)-(110,0)Picture1.Line(0,0)-(0,1.5)Fori=1To100Picture1.PSet(cishu(i),Ex(i)),RGB(128,128,0)Picture1.PSet(cishu(i),y2(i)),RGB(128,0,0)NextiFori=1To99Picture1.Line(cishu(i),Ex(i))-(cishu(i+1),Ex(i+1)),RGB(128,128,0)Picture1.Line(cishu(i),y2(i))-(cishu(i+1),y2(i+1)),RGB(128,0,0)7Nexti'延时Forj=1To1000Fork=1To50NextkNextjPicture2.ClsPicture2.PrintsDoEventsNextsLabel2.Caption=form2.Command3.Enabled=Trueform2.Command4.Enabled=True'泛化Dimtest(1To3,1To20)AsSingle,sumE(1To3)AsSingleDimMaxE(1To3)AsSingle,MinE(1To3)AsSingle,MeanE(1To3)AsSingleDimMaxxEAsSingle,MinxEAsSingleDimdes(1To3)AsSingle,outE(1To20)AsSingleDimMIn(1To3)AsSingle,s11(1To5)AsSingle,y11(1To5,1To20)AsSingle,s22AsSingleDimDateE(1To3,1To20)AsSingleFori=1To20Forj=1To3test(j,i)=4*(2*Rnd-1)NextjNextiForj=1To3Fori=1To20Iftest(j,i)=MaxE(j)ThenMaxE(j)=test(j,i)EndIfIftest(j,i)=MinE(j)ThenMinE(j)=test(j,i)Temp=Temp+test(j,i)EndIfNextisumE(j)=TempTemp=0MeanE(j)=sumE(j)/100Nextj'归一化Forj=1To3Fori=1To20IfMaxE(j)-test(j,i)=test(j,i)-MinE(j)ThenR=MaxE(j)-test(j,i)ElseR=test(j,i)-MinE(j)EndIfDateE(j,i)=(test(j,i)-MeanE(j))/RNextiNextj'求输出Forp=1To20Ti(p)=pFori=1To3MIn(i)=DateE(i,p)NextiFori=1To58Forj=1To3Temp=Temp+v(i,j)*MIn(j)Nextjs11(i)=TempTemp=0NextiFori=1To5y11(i,p)=1/(1+Exp(-s11(i)))NextiFori=1To3Temp=y11(i,p)*w(i)+TempNextis22=TempTemp=0y22(p)=1/(1+Exp(-s22))Nextp'输出及归一化Forj=1To20Fori=1To3des(i)=DateE(i,j)NextioutE(j)=2*(des(1)+Sin(des(2))

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功