ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:5.69MB ,
资源ID:11988173      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11988173.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(BP神经网络在函数逼近中的应用实例.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

BP神经网络在函数逼近中的应用实例.docx

1、BP神经网络在函数逼近中的应用实例1、问题重述32、样本确定33、神经网络结构构造32.1 隐含层节点数确定 32.2 结构参数确定 44、试验法确定隐含层节点数和学习率45、模型建立及其验证74.1 拟合结果74.2 模型验证86、附件9 0、问题重述:Function approximation: design a neural network or fuzzy model to fit the following MISO functions: 1 x1, x25Generate 200 data, 100 points for training and the other 100 fo

2、r model validation.1、样本确定为了使选择的样本具有:完备性、一致性和简洁性,所以自变量x1和x2从1 5均匀取200个点(x1=1:4/199:5;x2=1:4/199:5;),将x1、x2代入函数得到y,即得到原函数三维图形如图1.1所示。其中,奇数位置作为训练样本偶数位置的数据作为测试样本。图1.1 原函数三维图形2、神经网络结构构造由于输入变量有两个分别是x1、x2,则输入层的节点数为2,输出变量只有y即输出层节点数为1。隐含层节点数的多少直接决定了建立的BP神经网络的训练性能,如果节点数太少,网络可能无法训练,或者建立的网络容错性差,鲁棒性差,抗噪音能力差;反之,如

3、果节点数太多,使网络复杂性和训练时间急剧增加,甚至可能使网络难以收敛或无法收敛。建立的结构图如图2.1所示。 图2.1 BP神经网络结构图2.1隐含层节点数确定由经验公式(2.1)可以初步确定隐含层节点数范围是3 12且为整数。 (2.1)式中,为隐含层神经元个数,为输入向量的维数,为输出向量的维数,为修正系数取值为1-10之间的整数。2.2结构参数确定终止条件:训练最大迭代数5000(net.trainParam.epochs=5000;),目标误差(net.trainParam.goal=1.0e-5;)。学习率不同BP神经网络参数和训练时间也会不同,学习率过大时可能导致系统的不稳定,学习

4、速率较小导致较长的训练时间,可能导致收敛很慢。通过选取不同来做试验,根据得到训练结果来确定适合于本文的值。隐藏层和输出层的传递函数分别为正切S型函数tansig()和线性函数purelin(),设置BP神经网络的训练函数为trainlm函数,trainlm即采用Levenberg-Marquardt学习算法,该算法的优点在于其训练过程收敛速度快,且网络的训练误差也比较小。3、试验法确定隐含层节点数和学习率取初始学习率,初始隐含层节点数4,来确定输入样本数据处理的必要性,如图3.1所示。(a)进行归一化后的训练图 (b)未进行归一化后的训练图图3.1 BP训练结果图从图3.1可以看出进行归一化后

5、的数据在430步时满足设定误差,而未进行数据归一化处理时陷入局部极小值情况。为了使建立的神经网络具有更好的性能须对输入样本先进行归一化处理,本文是将输入变量的值折算到0 1内。归一化公式(2.2),反归一化公式(2.3)所示。 (2.2) (2.3)取学习率一定时,来确定隐含层节点数如表3.1所示,其训练图如图3.2所示。表3.1 不同隐含层节点数下训练参数隐含层节点数训练时间(s)迭代步数最终误差33.606734836656183160.001827742.641593382288442189.9693e-651.158*288569.7816e-660.81359659778699513

6、9.6824e-671.08232746707435499.9351e-680.999822929537224389.1637e-690.67004006967331272.1694e-6100.70476142404230561.333e-6110.74878677084247183.3659e-6120.72046252051979371.9426e-7130.72789856643400541.1704e-6 (a)隐含层节点数为3的训练图 (b)隐含层节点数为4的训练图(c)隐含层节点数为5的训练图 (d)隐含层节点数为6的训练图(e)隐含层节点数为7的训练图 (f)隐含层节点数为8的

7、训练图(g)隐含层节点数为9的训练图 (h)隐含层节点数为10的训练图(i)隐含层节点数为11的训练图 (j)隐含层节点数为12的训练图(k)隐含层节点数为13的训练图图3.2 训练结果图通过综合考虑建立网络结构的复杂性和训练速度等因素,本文选择隐含层节点数为5个。取隐含层节点数为5,来通过试验确定学习率如表3.2所示(初始值0.0001)。表3.2 不同学习率下训练参数学习率训练时间(s)迭代步数最终误差0.00011.46098811293092879.8425e-60.0011.139*076476.5235e-60.011.878072085562841289.5296e-60.16.

8、88265068357539209.9342e-60.28.140620615029897879.9404e-60.30.898170530444481329.7323e-60.40.916901141589704329.5595e-60.517.4710095838398589.3009e-60.819.2591395446172649.2436e-6通过表3.2本文选择学习率。4、模型建立及其验证根据上述参数可以建立输入层的节点数为2,输出层节点数为1,隐含层节点数为5。隐藏层和输出层的传递函数分别为正切S型函数tansig()和线性函数purelin(),BP神经网络的训练函数为trai

9、nlm函数,学习率,训练最大迭代数5000,目标误差,如下BP神经网络模型如图4.1所示。net=newff(minmax(test3),5,1,tansig,purelin,trainlm);net.trainParam.epochs=5000;net.trainParam.goal=1.0e-5;net.trainParam.lr=0.3;图4.1 BP结构图4.1 拟合结果通过对测试样本进行测试得到数据拟合结果如图4.2和4.3所示。图4.2 三维拟合图图4.3 三维拟合平面投影图建立的BP神经网络参数和均方误差如下:=均方误差error = 1.85526833137586=输入层权值

10、和阈值iw1 = -0.546028740196925 -6.21024296440124 4.85706377183303 2.22644798149902 5.7657413061143 -0.346903793080004 -0.999603508933502 -6.19013871925716 -5.53874753897862 -2.30936270485844b1 = 7.24997618704325 -4.17131885618426 -4.26576958646016 1.66847014287027 0.695978069970298=输出层权值和阈值iw2 = Column

11、s 1 through 3 -1.01926774985928 0.594426257012008 -0.413148818236868 Columns 4 through 5 0.177*2276 -0.221876626904716b2 = 1.16948399996256=通过图4.2和4.3可以得到本文选择的参数和建立BP神经网络结构的有效性,以及该模型的正确性。4.2 模型验证使用randperm函数随机打乱1-100以获得一个数字序列(randperm(100,100),并使用该序列将100个测试样本分成10组做交叉验证,即依次取该序列10个数据,将得到的数据作为选取测试样本(te

12、st2)相应的位置的值,验证结果如表4.2.1和图4.2.1所示。 表4.2.1 验证结果组数均方误差样本均值方差13.239090045374462.4707098372248315.8492591829827.70129817866876-6.5104042920062162.7566226780312.14606650071877.45128160660714175.3681347983413.5717700743609-11.6542077065476171.313275978257.96583989731501.021*144.675683150366.848176353181851

13、.4063379158164299.7546934473472.72773068520192-0.9766357474527126.38392328494810.2667410078333.88689562424727150.797975322591.705767527138861.705767527138869.046902584251108.750911048813528.75091104881352153.9822171932图4.2.1 均方误差曲线综上所述,通过确定BP神经网络的结构以及参数试验选择,建立了适合本文的神经网络,并通过10次的模型交叉验证来验证模型准确性,从表中可以看出

14、模型基本上准确的,但是泛化性能不是非常好。5、附件%输入样本clcclear allformat longg%y(1)=0;x1=1:4/199:5;x2=1:4/199:5;x3=x1;x2;for i=1:length(x1) for j=1:length(x2) y1(i,j)=(2+x1(i)1.5-1.5*sin(3*x2(j)2; endend;%X10,X20=meshgrid(x10,x20);mesh(x1,x2,y1)hold onfor i=1:length(x1)y(i)=(2+x1(i)1.5-1.5*sin(3*x2(i)2;end;test1=;test2=;y1

15、=;y2=;%确定训练样本和交叉验证样本for i=1:2:length(x1) test1=test1,x3(:,i); y1=y1,y(:,i);endfor i=2:2:length(x1) test2=test2,x3(:,i); y2=y2,y(:,i);end%去随机数number=randperm(100,100);%数据处理 归一化test3(1,:)=(test1(1,:)-min(test1(1,:)./(max(test1(1,:)-min(test1(1,:);test3(2,:)=(test1(2,:)-min(test1(2,:)./(max(test1(2,:)-

16、min(test1(2,:);y3=(y1-min(y1)./(max(y1)-min(y1);net=newff(minmax(test3),5,1,tansig,purelin,trainlm);%正切S型传递函数 %设置训练参数net.trainParam.show=10;net.trainParam.epochs=5000;net.trainParam.goal=1.0e-5;net.trainParam.lr=0.3;%网络训练net,tr=train(net,test3,y3);%仿真测试test5(1,:)=(test2(1,:)-min(test2(1,:)./(max(tes

17、t2(1,:)-min(test2(1,:);test5(2,:)=(test2(2,:)-min(test2(2,:)./(max(test2(2,:)-min(test2(2,:);s_bp1=sim(net,test5); % BP神经网络的仿真结果%反归一化s_bp1=(max(y1)-min(y1)*s_bp1+min(y-1); %plot3(test1(1,:),test1(2,:),y1,+);%hold onplot3(test2(1,:),test2(2,:),s_bp1,g*);hold onplot3(x3(1,:),x3(2,:),y,r);xlabel(x1);yl

18、abel(x2);zlabel(y);title(神经网络拟合y=(2+x11.5-1.5*sin(3*x2)2)legend(y=(2+x11.5-1.5*sin(3*x2)2,实际输出值 ,期望输出值) grid on;%画投影figuresubplot(131);plot3(test2(1,:),test2(2,:),s_bp1,g*);hold onplot3(x3(1,:),x3(2,:),y,r);xlabel(x1);ylabel(x2);zlabel(y);view(0,180);grid on;title(x1-y平面);subplot(132);plot3(test2(1,

19、:),test2(2,:),s_bp1,g*);hold onplot3(x3(1,:),x3(2,:),y,r);xlabel(x1);ylabel(x2);zlabel(y);view(180,270);grid on;title(x1-x2平面);subplot(133);plot3(test2(1,:),test2(2,:),s_bp1,g*);hold onplot3(x3(1,:),x3(2,:),y,r);xlabel(x1);ylabel(x2);zlabel(y);grid on;title(x2-y平面);view(270,360);%legend(期望输出值 ,实际输出值

20、,y=(2+x11.5-1.5*sin(3*x2)2) %view(90,180);error=0;for i=1:length(y2) error=error+sqrt(s_bp1(i)-y2(i)2);end;disp(=)disp(均方误差)error=error/length(y2)save net;load net;disp(=)disp(输入层权值和阈值) iw1=net.iw1,1 b1=net.b1 disp(=) disp(输出层权值和阈值) iw2=net.Lw2,1 b2=net.b2 disp(=) disp(模型交叉验证) Error=0 0 0 0 0 0 0 0

21、0 0;%均方误差 ave=0 0 0 0 0 0 0 0 0 0;%均值 D=0 0 0 0 0 0 0 0 0 0;%方差for j=1:1:10 test4=; y4=; for i=1:1:10 test4=test4,test2(:,number(j-1)*10+i); y4=y4,y2(number(j-1)*10+i); end; %归一化 test4(1,:)=(test4(1,:)-min(test4(1,:)./(max(test4(1,:)-min(test4(1,:);test4(2,:)=(test4(2,:)-min(test4(2,:)./(max(test4(2

22、,:)-min(test4(2,:); Y=sim(net,test4); %反一化 Y=(max(y1)-min(y1)*Y+min(y1); for k=1:length(test4) Error(j)=Error(j)+sqrt(Y(k)-y4(k)2); end ave(j)=mean(y4-Y); D(j)= var(y4-Y,1);end;Error=Error/length(test4)i=1:10;figure ;plot(i,Error,p);hold onplot(i,Error,r-,LineWidth,2);grid onxlabel(number);ylabel(error);title(交叉验证的均方误差);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1