还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
求用__tlab编BP神经网络预测程序求一用__tlab编的程序P=[];输入T=[];输出%创建一个新的前向神经网络net_1=newffmin__xP
[101]{tansigpurelin}traingdm%当前输入层权值和阈值inputWeights=net_
1.IW{11}inputbias=net_
1.b{1}%当前网络层权值和阈值layerWeights=net_
1.LW{21}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=_____;net_
1.trainParam.goal=1e-3;%调用TRAINGDM算法训练BP网络[net_1tr]=trainnet_1PT;%对BP网络进行仿真A=simnet_1P;%计算仿真误差E=T-A;MSE=mseEx=[];%测试simnet_1x%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%不可能啊我2009 28 对初学神经网络者的小提示第二步掌握如下算法:
2.最小均方误差这个原理是下面提到的神经网络学习算法的理论核心入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节“最小二乘法”
3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,SimonHaykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社, RichardO.Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,__rtinT.Hargan等著,中英文都有)
4.ART自适应谐振理论该算法的最通俗易懂的读物就是《神经网络设计》(机械工业出版社,__rtinT.Hargan等著,中英文都有)的第15和16章若看理论分析较费劲可直接编程实现一下
16.
2.7节的ART1算法小节中的算法.
4.BP算法初学者若对误差反传的分析过程理解吃力可先跳过理论分析和证明的内容直接利用最后的学习规则编个小程序并测试建议看《机器学习》机械工业出版社,TomM.Mitchell著,中英文都有)的第4章和《神经网络设计》(机械工业出版社,__rtinT.Hargan等著,中英文都有)的第11章BP神经网络__tlab实例
(1)分类__tlab实例采用__tlab工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考__tlab帮助文档%例1采用动量梯度下降算法训练BP网络%训练样本定义如下%输入矢量为 %p=[-1-231% -115-3]%目标矢量为 t=[-1-111]closeallclearclc%---------------------------------------------------------------%NEWFF——生成一个新的前向神经网络函数格式%net=newffPR[S1S
2...SNl]{TF1TF
2...TFNl}BTFBLFPFtakes%PR--Rx2__trixofminand__xvaluesforRinputelements%(对于R维输入,PR是一个Rx2的矩阵,每一行是相应输入的边界值)%Si--第i层的维数%TFi--第i层的传递函数default=tansig%BTF--反向传播网络的训练函数default=traingdx%BLF--反向传播网络的权值/阈值学习函数default=learngdm%PF--性能函数default=mse%---------------------------------------------------------------%TRAIN——对BP神经网络进行训练,函数格式%trainNETPTPiAiVVTV,输入参数%net--所建立的网络%P--网络的输入%T--网络的目标值default=zeros%Pi--初始输入延迟default=zeros%Ai--初始网络层延迟default=zeros%VV--验证向量的结构default=[]%TV--测试向量的结构default=[]%返回值%net--训练之后的网络%TR--训练记录训练次数及每次训练的误差%Y--网络输出%E--网络误差%Pf--最终输入延迟%Af--最终网络层延迟%---------------------------------------------------------------%SIM——对BP神经网络进行仿真,函数格式%[YPfAfEperf]=simnetPPiAiT%参数与前同%---------------------------------------------------------------%%定义训练样本%P为输入矢量echoonP=[-1-2 3 1; -1 1 5-3];%T为目标矢量T=[-1-111];%创建一个新的前向神经网络net=newffmin__xP
[31]{tansigpurelin}traingdm%---------------------------------------------------------------%训练函数traingdm,功能以动量BP算法修正神经网络的权值和阈值%它的相关特性包括%epochs训练的次数,默认100%goal误差性能目标值,默认0%lr学习率,默认
0.01%__x_fail确认样本进行仿真时,最大的失败次数,默认5%mc动量因子,默认
0.9%min_grad最小梯度值,默认1e-10%show显示的间隔次数,默认25%time训练的最长时间,默认inf%---------------------------------------------------------------%当前输入层权值和阈值inputWeights=net.IW{11}inputbias=net.b{1}%当前网络层权值和阈值layerWeights=net.LW{21}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网络[nettr]=trainnetPT;%对BP网络进行仿真A=simnetP%计算仿真误差E=T-AMSE=mseEechoofffigure;plot1:4T-*1:4A-o1 BP神经网络的原理及算法的基本步骤理论上已证明一个3层的BP网络能够实现任意的连续映射可以任意精度逼近任何给定的连续函数
1.1 BP神经网络的原理BPBackPropagation神经网络通常由具有多个节点的输入层inputlayer、隐含层hiddenlayer和多个或一个输出节点的输出层outputlayer组成其学习过程分为信息的正向传播过程和误差的反向传播过程两个阶段外部输入的__经输入层、隐含层为止的神经元逐层处理向前传播到输出层给出结果如果在输出层得不到期望输出则转入逆向传播过程将实际值与网络输出之间的误差沿原连接通路返回通过修改各层神经元的连接权重减少误差然后再转入正向传播过程反复迭代直到误差小于给定的值表11981~2005年全国总人口(单位万人)年份1981198219831984198519861987198819__人口99622101541102495103604104639106008108000109614111191年份199019911992199319941995199619971998人口___3331158231171711185171198501211211223__123626124810年份1999200020012002200320042005人口____09缺省127627128453129227129988130756模型二预测2001年~2010年全国总人口(单位:万人)年份20012002200320042005人口127699128457129220129987130758年份20062007200820092010人口131534132315133100133__0134685模型预测的全国总人口1981年至2016年单位万人年份198119821983198419851991人口99266101308102967104600106203115172年份199219931994199520012002人口116550117__5119205120480127403128436年份200320042005200620072008人口129437130405131340132244133116133958年份200920102015202020252030人口134770135552139049141921144257146144年份____20402045205020602070人口147659148869149832150596151678152352年份208020902100210521102120人口152769153026153185153240153283153344模型四预测2011至2020年人口单位万人年份20112012201320142015全国总人口134668135478136325137185138036年份20162017201820192020全国总人口138862139652140402141106141760
2.1 利用__tlabScript节点实现在此以对一个非线性函数的逼近作为例子来说明实现流程其中输入矢量p=[-1∶
0.05∶1];目标矢量t=sin2*pi*p+
0.1randnsizep利用__t-labScript节点实现BP算法的过程如下:1新建一个LabVIEWvi在框图程序中添加__tlabScript节点2在节点内添加__tlab的动量BP算法实现代码并分别在节点左右边框分别添加对应的输入/输出参数如图1所示3在vi的前面板添加相应的控件设置输入参数连接输出控件执行程序结果如图
2、图3所示下面的代码将重建我们以前的网络,然后用批处理最速下降法训练网络(注意用批处理方式训练的话所有的输入要设置为矩阵方式)net=newff[-12;05]
[31]{tansigpurelin}traingd;net.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=trainnetpt;TRAINGDEpoch0/300MSE
1.59423/1e-05Gra___nt
2.76799/1e-10TRAINGDEpoch50/300MSE
0.00236382/1e-05Gra___nt
0.0495292/1e-10TRAINGDEpoch100/300MSE
0.000435947/1e-05Gra___nt
0.0161202/1e-10TRAINGDEpoch150/300MSE
8.68462e-05/1e-05Gra___nt
0.00769588/1e-10TRAINGDEpoch200/300MSE
1.45042e-05/1e-05Gra___nt
0.00325667/1e-10TRAINGDEpoch211/300MSE
9.64816e-06/1e-05Gra___nt
0.00266775/1e-10TRAINGDPerfor__n__goalmet.a=simnetpa=-
1.0010-
0.99__
1.
00180.9985用nnd12sd1来演示批处理最速下降法的性能带动量的批处理梯度下降法(TRAINGDM)net=newff[-12;05]
[31]{tansigpurelin}traingdm;net.trainParam.show=50;net.trainParam.lr=
0.05;net.trainParam.mc=
0.9;net.trainParam.epochs=300;net.trainParam.goal=1e-5;p=[-1-122;0505];t=[-1-111];net=trainnetpt;TRAINGDMEpoch0/300MSE
3.6913/1e-05Gra___nt
4.54729/1e-10TRAINGDMEpoch50/300MSE
0.00532188/1e-05Gra___nt
0.213222/1e-10TRAINGDMEpoch100/300MSE
6.3___8e-05/1e-05Gra___nt
0.0409749/1e-10TRAINGDMEpoch___/300MSE
9.06235e-06/1e-05Gra___nt
0.00908756/1e-10TRAINGDMPerfor__n__goalmet.a=simnetpa=-
1.0026-
1.
00440.
99690.
99923.1__TLAB神经网络工具箱的GUI(图形用户界面)工具.神经网络工具箱的GUI工具主要包括1)神经网络GUI工具主窗口;2)神经网络的建立窗口;3)网络训练对话框;4)自适应参数设置对话框;5)权值显示窗口.通过神经网络工具箱的GUI工具按钮就能很方便地打开所建立的神经网络的结构图进行察看,也可以看到一个训练过程的偏差曲线变化图.
3.2神经网络工具箱解决问题的一般步骤1)对待解决的问题进行分析,根据各种网络的特点选用合适的网络模型;2)建立网络;3)对网络初始化;4)对网络进行训练;5)对网络进行仿真检验;6)应用网络解决问题.4系统的预测仿真
4.1使用神经网络GUI工具建立神经网络的输入样本和目标样本1)在__TLAB命令窗口输入nntool,打开图形用户界面工具主窗口,如图1所示.2)单击NewData按钮,打开数据生成对话框.建立输入样本P,数据的输入和设置如图2所示,单击Create按钮关闭对话框.3)依照上一步,输入目标样本T,数据类型选Targets.回到GUI工具的主窗口,单击Export按钮弹出导出对话框,选中变量P和T,然后单击Export按钮,把变量P和T导出到工作区.这为仿真文件从工作空间调用导入数据做好了准备.
4.2建立仿真模型文件进行预测运行__TLAB软件中的Simulink仿真环境,在神经网络模块库中调用神经网络预测控制模块NNPredictiveController,用模块封装技术建立河流水质数学方程模块,连接__源模块和示波器模块后就建立了河流水质预测仿真文件predwq.mdl,如图3,其中FromWorkspa__模块中是目标样本T的数据,可以直接从工作区导入.双击神经网络预测控制模块NNPredictiveController,弹出如图4的窗口,此窗口用于设计模型预测控制器,输入控制器变量空间N2和Nu、权值参数ρ和控制最优化参数α的值.然后__PlantIdentification按钮,打开系统辨识窗口,从工作区导入输入样本P,设置好其它参数后训练网络,单击OK按钮,将训练好的神经网络模型导入到神经网络预测控制模块中,在NNPredictiveController窗口中单击OK按钮,将控制器参数导入到NNPredictiveController模块中.图3predwq.mdl仿真文件图4神经网络预测控制模块窗口系统模块SystemModel是用模块封装技术封装的河流水质微分方程式
(4)的仿真模块,如图5所示.在predwqSimulink主窗口,仿真时间输入100,再单击Startsimulation命令按钮开始仿真.仿真结束后,双击示波器模块就可以查看仿真结果,如图6所示.对仿真结果和目标样本的值进行比较,根据它们的差值绘出预测误差变化曲线,如图7所示.图5河流水质微分方程仿真模块图6目标和预测结果图5结果与讨论比较图
6、图7知,本文建立的网络系统对水质参数耗氧量的预测图像和目标样本基本一致.把仿真预测结果数据和实际目标样本数据进行比较,正、负最大误差分别为
0.11和-
0.06,最小误差为0,虽然还有偏差,但误差是在满意的范围之内.因此,把河流水质的数学模型用__TLAB神经网络进行仿真预测,具有较高的精度,为河流水质预测提供了方便的方法.图7预测误差的曲线变化利用NNToolbox
4.
0.2架构神经网络主要采用以下两种方法:1使用网络数据管理器NetworkData__nager具体操作为:在LaunchPad窗体中__NeuralNetworkToolbox目录下的nntool文件即在计算机屏幕__出现NetworkData__nager窗体;__窗体中NewNetwork按钮根据提示设定网络类型、网络结构、网络算法和网络激活函数即可生成用户定义的神经网络;__View按钮可显示该神经网络的结构图;__initialize、simu-late、train和adapt按钮并设定参数可对神经网络进行初始化、模拟、训练和仿真;最后__Export按钮可将网络模拟、训练和仿真的结果以文件的形式导出该方法操作简易无需编写程序代码即可完成神经网络的构建、初始化、训练和仿真等主要工作但是该方法不能和__TLAB其他程序动态链接网络仿真结果只能以数据文件的形式导出不能可视化显示2编写__TLAB应用程序即运用__TLAB语言引用神经网络工具箱函数编写程序代码并保存为M文件然后运行该文件该种方法可以根据研究人员的需要调用__TLAB丰富的内部函数并能和各类数据库及其他应用程序包括C、FOR-TRAN程序动态链接使神经网络功能更为强大本研究即采用该种方法其中引用的重要算法、函数及参数将在第
2、3节详述中国未来几年人口总量的预测本文对所使用的序列数据进行GM(1,1)模型维数优化时得到最佳的维数是5~8维不等,均属于短序列预测,只适合短期的人口总量的预测,所以对2008-2012年共5个时间序列点的中国人口总量进行预测,结果如表2所示表2灰色人工神经网络(GANN)模型对2008-2012年中国人口总量预测的结果万人年份20082009201020112012总人口132663132963133706134373135025建立BP神经网络预测模型在进行BP网络预测模型设计时主要考虑网络的层数和每层中神经元的个数神经网络通过计算机程序实现对非线性映射逼近在众多语言中__TLAB语言允许数学形式的语言编写程序比其他语言更接近我们书写计算公式的思维方式因此编程效率高易学易懂年份人口总数(万人)198510585119861075071987109300198811102619__1127041990___3331991115823199211717119931185171994119850199512112119961223__199712362619981247611999125786200012674320011276272002128453200312922720041299882005130756采用单隐层的BP网络进行预测
[3]建立两层神经网络,由于输入样本为3维的输入向量,因此,输入层一共有3个神经元,根据Kolmogorov
[2]定理,网络应该为3×7×3的结构其中,threshold设定了网络输入向量的取值范围
[01],第一层神经元数为3传函类型为‘LOGSIG’第二层神经元数为7传函类型为‘PURELIN’采用动量梯度下降反向传播算法对网络进行训练中间层的神经元个数是很难确定的,而这又在很大程度上影响着网络的预测性能当网络的预测误差最小时,网络中间层的神经元数目就是最佳值进行对比后,可见中间层神经元个数为8时,网络的预测性能最好训练结果如图1所示,网络的预报误差如Perfor__n__is
9.__455e-005Goalis
0.
00010100.035-
1100.
030.025-
2100.
020.015-
3100.
010.005-4100-
0.005050100150155Epochs-
0.
0111.
21.
41.
61.
822.
22.
42.
62.83图1训练结果(中间层神经元数目8)图2网络的预报误差(中间层神经元数目8)年份总人口数(万人)200614080020071425002008146600200915100020101558002011159600201216210020131633002014163800201516400020161641002017164100201816410020191641002020164100,每行语句前都有一个符号“”,此即命令提示符在此符号后也只能在此符号后输入各种语句并按Enter键,方可被__TLAB接收和执行执行的结果通常就直接显示在语句__,如图
1.2所示不同类型语句用不同颜__分在默认情况下,输入的命令、函数、表达式以及计算结果等采用黑色字体,字符串采用赭红色,if、for等关键词采用蓝色,注释语句用绿色因为__TLAB是一个多功能集成软件,不同的功能需要使用不同的文件格式去表现,所以__TLAB的文件也有多种格式最基本的是M文件、数据文件和图形文件,除此之外,还有MEX文件、模型文件和仿真文件等下面分别予以说明1M文件,以.m为扩展名,所以称为M文件M文件是由一系列__TLAB语句组成的文件,包括命令文件和函数文件两类,命令文件类似于其他高级语言中的主程序或主函数,而函数文件则类似于子程序或被调函数__TLAB众多工具箱中的函数文件基本上是M函数文件因为它们是由ASCII码表示的文件,所以可由任一文字处理软件编辑后以文本格式存放2数据文件,以.__t为扩展名,所以又称__T文件在讨论工作空间窗口时已经涉及到__T文件显然,数据文件保存了__TLAB工作空间窗口中变量的数据3图形文件,以.fig为扩展名主要由__TLAB的绘图命令产生,当然也可用File菜单中的New命令建立4MEX文件,以.mex或.dll为扩展名,所以称MEX文件MEX实际是由__TLABExecutable缩写而成的,由此可见,MEX文件是__TLAB的可执行文件5模型和仿真文件,模型文件以.mdl为扩展名,由Simulink仿真工具箱在建立各种仿真模型时产生仿真文件以.s为扩展名键盘输入语句input其调用格式有1x=inputprompt显示提示字符串prompt,要求用户键盘输入x的值2x=inputprompts显示提示字符串prompt,要求用户键盘输入字符型变量x的值,不至于将输入的数字看成是数值型数据
6.
3.2屏幕输出语句disp屏幕输出最简单的方法是直接写出欲输出的变量或数组名,后面不加分号此外,可以采用disp语句,其调用格式为dispx
6.
3.3M数据文件的存储/加载s__e/load
1.s__e语句其调用格式有1s__e将所有工作空间变量存储在名为__TLAB.__t的文件中2s__efilename将所有工作空间变量存储在名为filename的文件中3s__efilenameXYZ将工作空间的指定变量X、Y、Z存于名为filename的文件中
2.load语句其调用格式有1load如果__TLAB.__t文件存在,则加载__TLAB.__t文件中存储的所有变量到工作空间;否则返回一错误信息2loadfilename如果filename文件存在,则加载filename文件中存储的所有变量到工作空间;否则返回一错误信息3loadfilenameXYZ如果filename文件及存储的变量X、Y、Z存在,则加载filename文件中存储的变量X、Y、Z到工作空间;否则返回一错误信息在__TLAB中,主要的二维绘图函数如下1plot x轴和y轴均为线性刻度2loglog x轴和y轴均为对数刻度3semilogx x轴为对数刻度,y轴为线性刻度4semilogy x轴为线性刻度,y轴为对数刻度5plotyy:绘制双纵坐标图形其中plot是最基本的二维绘图函数,其调用格式有
①plotY若Y为实向量,则以该向量元素的下标为横坐标,以Y的各元素值为纵坐标,绘制二维曲线;若Y为复数向量,则等效于plotrealYi__gY;若Y为实矩阵,则按列绘制每列元素值相对其下标的二维曲线,曲线的条数等于Y的列数;若Y为复数矩阵,则按列分别以元素实部和虚部为横、纵坐标绘制多条二维曲线
②plotXY若X、Y为长度相等的向量,则绘制以X和Y为横、纵坐标的二维曲线;若X为向量,Y是有一维与Y同维的矩阵,则以X为横坐标绘制出多条不同色彩的曲线,曲线的条数与Y的另一维相同;若X、Y为同维矩阵,则绘制以X和Y对应的列元素为横、纵坐标的多条二维曲线,曲线的条数与矩阵的列数相同
③plotX1Y1X2Y2…XnYn其中的每一对参数Xi和Yii=
12...n的取值和所绘图形与
②中相同
④plotX1Y1LineSpec...以LineSpec指定的属性,绘制所有Xn、Yn对应的曲线
⑤plot...PropertyNamePropertyValue...对于由plot绘制的所有曲线,按照设置的属性值进行绘制,PropertyName为属性名,PropertyValue为对应的属性值
⑥h=plot...调用函数plot时,同时返回每条曲线的图形句柄h列向量
①在工作空间查看各个变量,或在命令窗口用whowhos注意大小写查看各个变量
②在工作空间双击变量,弹出ArrayEditor窗口数组编辑器窗口,即可修改变量
③使用s__e命令把工作空间的全部变量保存为my_var.__t文件s__emy_var.__t
④输入下列命令clearall%清除工作空间的所有变量观察工作空间的变量是否被清空使用load命令把刚才保存的变量载入工作空间loadmy_var.__t
⑤清除命令窗口命令clcTraining-BlueGoal-Black。