求用matlab编BP神经网络预测程序求一用matlab编的程序P=[。。。];输入T=[。。。];输出%创建一个新的前向神经网络net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')%当前输入层权值和阈值inputWeights=net_1.IW{1,1}inputbias=net_1.b{1}%当前网络层权值和阈值layerWeights=net_1.LW{2,1}layerbias=net_1.b{2}%设置训练参数net_1.trainParam.show=50;net_1.trainParam.lr=0.05;net_1.trainParam.mc=0.9;net_1.trainParam.epochs=10000;net_1.trainParam.goal=1e-3;%调用TRAINGDM算法训练BP网络[net_1,tr]=train(net_1,P,T);%对BP网络进行仿真A=sim(net_1,P);%计算仿真误差E=T-A;MSE=mse(E)x=[。。。]';%测试sim(net_1,x)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%不可能啊我200928对初学神经网络者的小提示第二步:掌握如下算法:2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,SimonHaykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社,RichardO.Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,MartinT.Hargan等著,中英文都有)。4.ART(自适应谐振理论),该算法的最通俗易懂的读物就是《神经网络设计》(机械工业出版社,MartinT.Hargan等著,中英文都有)的第15和16章。若看理论分析较费劲可直接编程实现一下16.2.7节的ART1算法小节中的算法.4.BP算法,初学者若对误差反传的分析过程理解吃力可先跳过理论分析和证明的内容,直接利用最后的学习规则编个小程序并测试,建议看《机器学习》(机械工业出版社,TomM.Mitchell著,中英文都有)的第4章和《神经网络设计》(机械工业出版社,MartinT.Hargan等著,中英文都有)的第11章。BP神经网络Matlab实例(1)分类:Matlab实例采用Matlab工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考Matlab帮助文档。%例1采用动量梯度下降算法训练BP网络。%训练样本定义如下:%输入矢量为%p=[-1-231%-115-3]%目标矢量为t=[-1-111]closeallclearclc%---------------------------------------------------------------%NEWFF——生成一个新的前向神经网络,函数格式:%net=newff(PR,[S1S2...SNl],{TF1TF2...TFNl},BTF,BLF,PF)takes,%PR--Rx2matrixofminandmaxvaluesforRinputelements%(对于R维输入,PR是一个Rx2的矩阵,每一行是相应输入的边界值)%Si--第i层的维数%TFi--第i层的传递函数,default='tansig'%BTF--反向传播网络的训练函数,default='traingdx'%BLF--反向传播网络的权值/阈值学习函数,default='learngdm'%PF--性能函数,default='mse'%---------------------------------------------------------------%TRAIN——对BP神经网络进行训练,函数格式:%train(NET,P,T,Pi,Ai,VV,TV),输入参数:%net--所建立的网络%P--网络的输入%T--网络的目标值,default=zeros%Pi--初始输入延迟,default=zeros%Ai--初始网络层延迟,default=zeros%VV--验证向量的结构,default=[]%TV--测试向量的结构,default=[]%返回值:%net--训练之后的网络%TR--训练记录(训练次数及每次训练的误差)%Y--网络输出%E--网络误差%Pf--最终输入延迟%Af--最终网络层延迟%---------------------------------------------------------------%SIM——对BP神经网络进行仿真,函数格式:%[Y,Pf,Af,E,perf]=sim(net,P,PiAi,T)%参数与前同。%---------------------------------------------------------------%%定义训练样本%P为输入矢量echoonP=[-1,-2,3,1;-1,1,5,-3];%T为目标矢量T=[-1,-1,1,1];%创建一个新的前向神经网络net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')%---------------------------------------------------------------%训练函数:traingdm,功能:以动量BP算法修正神经网络的权值和阈值。%它的相关特性包括:%epochs:训练的次数,默认:100%goal:误差性能目标值,默认:0%lr:学习率,默认:0.01%max_fail:确认样本进行仿真时,最大的失败次数,默认:5%mc:动量因子,默认:0.9%min_grad:最小梯度值,默认:1e-10%show:显示的间隔次数,默认:25%time:训练的最长时间,默认:inf%---------------------------------------------------------------%当前输入层权值和阈值inputWeights=net.IW{1,1}inputbias=net.b{1}%当前网络层权值和阈值layerWeights=net.LW{2,1}layerbias=net.b{2}%设置网络的训练参数net.trainParam.show=50;net.trainParam.lr=0.05;net.trainParam.mc=0.9;net.trainParam.epochs=1000;net.trainParam.goal=1e-3;%调用TRAINGDM算法训练BP网络[net,tr]=train(net,P,T);%对BP网络进行仿真A=sim(net,P)%计算仿真误差E=T-AMSE=mse(E)echoofffigure;plot((1:4),T,'-*',(1:4),A,'-o')1BP神经网络的原理及算法的基本步骤理论上已证明,一个3层的BP网络能够实现任意的连续映射,可以任意精度逼近任何给定的连续函数。1.1BP神经网络的原理BP(BackPropagation)神经网络通常由具有多个节点的输入层(inputlayer)、隐含层(hiddenlayer)和多个或一个输出节点的输出层(outputlayer)组成,其学习过程分为信息的正向传播过程和误差的反向传播过程两个阶段。外部输入的信号经输入层、隐含层为止。的神经元逐层处理,向前传播到输出层,给出结果。如果在输出层得不到期望输出,则转入逆向传播过程,将实际值与网络输出之间的误差沿原连接通路返回,通过修改各层神经元的连接权重,减少误差,然后再转入正向传播过程,反复迭代,直到误差小于给定的值表11981~2005年全国总人口(单位:万人)年份198119821983198419851986198719881989人口99622101541102495103604104639106008108000109614111191年份199019911992199319941995199619971998人口114333115823117171118517119850121121122389123626124810年份1999200020012002200320042005人口125909缺省127627128453129227129988130756模型二预测2001年~2010年全国总人口(单位:万人)年份20012002200320042005人口127699128457129220129987130758年份20062007200820092010人口131534132315133100133890134685模型预测的全国总人口(1981年至2016年)(单位:万人)年份198119821983198419851991人口99266101308102967104600106203115172年份199219931994199520012002人口116550117895119205120480127403128436年份200320042005200620072008人口129437130405131340132244133116133958年份200920102015202020252030人口134770135552139049141921144257146144年份203520402045205020602070人口147659148869149832150596151678152352年份208020902100210521102120人口152769153026153185153240153283153344模型四预测2011至2020年人口(单位:万人)年份20112012201320142015全国总人口134668135478136325137185138036年份20162017201820192020全国总人口1388621396521404021411061417602.1利用MatlabScript节点实现在此以对一个非线性函数的逼近作为例子来说明实现流程,其中输入矢量p=[-1∶0.05∶1];目标矢量t=sin(2*pi*p)+0.1randn(size(p))。利用Mat-labScript节点实现BP算法的过程如下:(1)新建一个LabVIEWvi,在框图程序中添加MatlabScript节点。(2)在节点内添加Matlab的动量BP算法实现代码,并分别在节点左右边框分别添加对应的输入/输出参数,如图1所示。(3)在vi的前面板添加相应的控件,设置输入参数,连接输出控件。执行程序,结果如图2、图3所示。下面的代码将重建我们以前的网络,然后用批处理最速下降法训练网络。(注意用批处理方式训练的话所有的输入要设置为矩阵方式)net=newff([-12;05],[3,1],{'tansig','purelin'},'traingd');第23卷第1期陈龙等:MATLAB神经网络工具箱在河流水质预测中的应用73net.trainParam.show=50;net.trainParam.lr=0.05;net.trainParam.epochs=300;net.trainParam.goal=1e-5;p=[-1-122;0505];t=[-1-111];net=train(net,p,t);TRAINGD,Epoch0/300,MSE1.59423/1e-05,Gradient2.76799/1e-10TRAINGD,Epoch50/300,MSE