《神经网络-实例-程序.docx》由会员分享,可在线阅读,更多相关《神经网络-实例-程序.docx(5页珍藏版)》请在第壹文秘上搜索。
1、有时候钻进去就是峰回路转的,偶尔也出来透透气吧,今天玩这个真心很累了,let,ShaVearest-随着计算机的普及,现代算法的发展已经不再是那么简单的循环套弄下的了。最近研究了很多回根据现实生活中的一些现象得出的算法,如神经网络算法。人脑大约有100O多亿个神经元,到现在人们对他的了解也是很有限的。神经网络算法便是从结构复杂的人脑抽象出来的,具有信息并行处理能力、自学能力和推理能力,很神奇吧?好吧,扯扯,具体的算法是可以自己设计的,不过比较麻烦,这里就不写了,直接给出mallab实现的方法。目前应用的最为广泛的两种网络是前向反馈(BP)和径向基(RBP)网络,这两个网络的研究都比较成熟了,其
2、中BP神经网络的应用频率比较高,这里就先介绍这个了,其他的以后有时间再说,最近比较忙。神经网络的理论比较复杂,有兴趣自己去搜搜,一堆一堆的数学表达式,推了我半天。直接说正题吧,matlab实现的方法,MathWOrkS公司开发了神经网络工具箱,一般不需要了解太深的可以直接拿来用。matlab神经网络工具箱主要用于BP网络分析与设计的函数,这面这些函数最好都弄懂:1、前向网络创建函数:newcfnewff和IIeWffld2、激励函数:logsig、dlogsig(S型对数式)tansig、dtansig(正切函数式)purelidpurelin(线性函数)3、学习函数:Iearngd(梯度下降
3、权值/阀值学习函数)、Ieamdm(梯度下降动量函数)4、训练函数:Irainbfg(BFGS准牛顿BP算法)、Iraingd(梯度下降BP算法训练函数)、traingdm(梯度下降动量BP算法)等等5、性能函数:mse(均方误差性能函数)、msereg函数学习这一块在学习BP神经算法的时候除了参考帮助文档(很有用),也可以参考下面的代码自己改改试试,一般运行时间长短看你的参数设置决定,有时几秒钟,有时,可能就几小时了。BP网络求解过程,具体代码里也都注释了,理清思绪:1、原始数据的输入2、数据的归化处理3、网络训练4、对原始数据进行仿真5、将原始数据仿真的结果与已知的样本进行对比6、对新的数
4、据进行仿真代码具体是参考的matlab在数学建模中的应用(pl17)里的一道题目编写的,由于时间有限,可以看看运行结果大概想想题目是什么,这里就不写了。代码:%原始数据的输入clc,clearsqrs=20.5522.4425.3727.1329.4530.130.9634.0636.4238.0939.1339.99.41.9344.5947.3052.8955.7356.7659.1760.63;%人数单位:万人sqjdcs=0.60.750.850.901.051.351.451.601.701.852.152.20.2.252.352.502.602.702.852.953.10;%机
5、动车数单位:万辆sqglmj=0.090.110.110.140.200.230.230.320.320.340.360.360.380.490.560.590.590.670.690.79;%公路面积单位:万平方千米glkyl=512662177730914510460113871235315750183041983621024.194902043322598251073344236836405484292743462;%公路客运量单位:万人glhyl=1237137913851399166317141834432281328936110991120310524.11115133201676
6、218673207242080321804;%公路货运量单位:万吨p=sqrs;SqjdCs;SqgImj;%输入数据矩阵t=Iglkyhglhyl;%目标矩阵%归一化处理pn,minp,maxp,tn,mint,maxt=premnmx(p,t);%对Pt矩阵进行归,化处理dx=-l,l;-1%BP网络训练net=newff(dx,3,7,2JJtansig,tansig,purelin,traingdx);%建立模型,并用梯度下降法训练net.trainParam.show=1000;%1000轮回显示次net.trainParam.1.r=0.05;%学习速率net.trainParam
7、.epochs=50000;%最大训练轮回net.trainParam.goal=0.65*10(-3);%均方误差net=train(net,pn,tn);%开始训练%利用原始数据对BP网络仿真an=sim(net,pn);%用训练好的模型进行仿真a=postmnmx(an,mint,maxt);%把仿真到的数据还原到原始的数量级%对比测试X=1990:2009;newk=a(l,:);newh=a(2,:);figure(2);subplot(2,l,l);PIot(X,newk,r-o,x,glkyl,b-+);IegendC网络输出客运量?实际客运量,);XIabeIC年份);ylab
8、elC客运量/万人,);titleC运用数据箱客运量学习和测试对比图);subplot(2,l,2);plot(x,newh,r-o,x,glhyl,b-+);IegendC网络输出货运量?实际货运量,);XIabeIC年份);ylabelC货运量/万吨,);IitleC运用数据箱货运量学习和测试对比图);%利用训练好的网络进行预测pnew=73.3975.553.96354.09750.98801.0268;pnewn=tramnmx(pnew,minp,maxp);%利用原始输入数据的归化参数对新参数进行归化anewn=sim(net,pnewn);%利用归一化后的数据进行仿真anew=postmnmx(anewn,mint,maxt)%把仿真得到的数据还原原始的数量级图形:具体参数自己设置,这里我改小了些,时间用的比较短。4NeuralNetworkTraining(nntraintool)CD1