资源描述:
《BP神经网络实例含源码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、BP神经网络算法实现一:关于BP网络BP(BackPropagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输
2、出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。BP网络主要应用于以下方面:函数逼近、模式识别和分类、数据压缩。BP神经网络有较强的泛化性能,使网络平滑的逼近函数,能合理的响应被训练以外的输入。同时,BP网络又有自己的限制与不足,主要表现在:需要较长的训练时间、网络训练的结果可能使得权值逼近局部最优、训练数据范围外的数据泛
3、化能力较差。为了避免训练陷入局部最优解,本程序采用改进的BP网络训练,既加入动量因子,使得网络在最优解附近有一定的震荡,跳出局部最优的范围。BP网络训练中学习速率与动量因子的选择很重要,在后面的内容中将进行详细的讨论。二:训练的函数程序中训练的函数为一个三输入一输出的非线性函数,如下所示:,网络结构为:3—5—1三:程序及相关界面(VB)1主界面16代码:PrivateSubCommand1_Click()form2.Visible=FalseForm3.Visible=TrueEndSubPrivateSub
4、Command2_Click()form2.Visible=FalseForm1.Visible=TrueEndSubPrivateSubCommand3_Click()form2.Visible=FalseForm4.Visible=TrueEndSubPrivateSubCommand4_Click()form2.Visible=FalseForm5.Visible=TrueEndSubPrivateSubCommand5_Click()EndEndSubPrivateSubForm_Load()Comma
5、nd3.Enabled=FalseCommand4.Enabled=FalseEndSub2查看网络结构16代码:PrivateSubCommand1_Click()Form3.Visible=Falseform2.Visible=TrueEndSub3网络训练代码:16PrivateSubCommand1_Click()Form1.Visible=Falseform2.Visible=TrueEndSubPrivateSubCommand2_Click()Label2.Caption="样本训练中…"Dimi
6、AsInteger,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)As
7、SingleDimtime(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)AsS
8、ingleDimDw(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