- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.2 BP网络在函数逼近中的应用
3.2.1 问题的提出
BP网络由很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面将通过实例来说明BP网络在函数逼近方面的应用。
要求设计一个BP网络,逼近以下函数:g(x)=1+sin(k*pi/4*x),实现对该非线性函数的逼近。其中,分别令k=1,2,4进行仿真,通过调节参数(如隐藏层节点个数等)得出信号的频率与隐层节点之间,隐层节点与函数逼近能力之间的关系。
3.2.2 基于BP神经网络逼近函数
步骤1:假设频率参数k=1,绘制要逼近的非线性函数的曲线。函数的曲线如图3.2所示
k=1;
p=[-1:.05:8];
t=1+sin(k*pi/4*p);
plot(p,t,-);
title(要逼近的非线性函数);
xlabel(时间);
ylabel(非线性函数);
图3.2 要逼近的非线性函数曲线
步骤2:网络的建立
应用newff()函数建立BP网络结构。隐层神经元数目n可以改变,暂设为n=3,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练的算法采用Levenberg – Marquardt算法trainlm。
n=3;
net = newff(minmax(p),[n,1],{tansig purelin},trainlm);
对于初始网络,可以应用sim()函数观察网络输出。
y1=sim(net,p);
figure;
plot(p,t,-,p,y1,:)
title(未训练网络的输出结果);
xlabel(时间);
ylabel(仿真输出--原函数-);
同时绘制网络输出曲线,并与原函数相比较,结果如图3.3所示。
图3.3 未训练网络的输出结果
其中 “ ” 代表要逼近的非线性函数曲线;
“‥‥‥” 代表未经训练的函数曲线;
因为使用newff( )函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也有时不同。
步骤3:网络训练
应用train()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为50,训练精度设置为0.01,其余参数使用缺省值。训练后得到的误差变化过程如图3.4所示。
图3.4 训练过程
net.trainParam.epochs=50; (网络训练时间设置为50)
net.trainParam.goal=0.01;(网络训练精度设置为0.01)
net=train(net,p,t);(开始训练网络)
TRAINLM-calcjx, Epoch 0/50, MSE 9.27774/0.01, Gradient 13.3122/1e-010
TRAINLM-calcjx, Epoch 3/50, MSE 00.01, Gradient 0.0337555/1e-010
TRAINLM, Performance goal met.
从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。
步骤4: 网络测试
对于训练好的网络进行仿真:
y2=sim(net,p);
figure;
plot(p,t,-,p,y1,:,p,y2, --)
title(训练后网络的输出结果);
xlabel(时间);
ylabel(仿真输出);
绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图3.5所示。
图3.5 训练后网络的输出结果
其中 “ ” 代表要逼近的非线性函数曲线;
“‥‥‥” 代表未经训练的函数曲线;
“―――” 代表经过训练的函数曲线;
从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果比较好。
3.2.3 不同频率下的逼近效果
改变非线性函数的频率和BP函数隐层神经元的数目,对于函数逼近的效果有一定的影响。网络非线性程度越高,对于BP网络的要求越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果也有一定影响,一般来说隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。
下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明。
(1)频率参数设为k=2,当隐层神经元数目分别取n=3、n=6时,得到了训练后的网络输出结果如图3.6,3.7所示。
图3.6 当n=3时训练后网络的输出结果 图3.7 当n=6时训练后网络的输出结果
其中 “ ” 代表要逼近的非线性函数曲线;
“‥‥‥” 代表未经训练的函数曲线;
“―――” 代表经过训练
原创力文档


文档评论(0)