- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数逼近基于MATLAB的BP神经网络应用2
BP神经网络逼近非线性函数
1. BP 网络在函数逼近中的应用
1.1 问题的提出
BP 网络由很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面将通过实例来说
明BP 网络在函数逼近方面的应用。
要求设计一个BP网络,逼近以下函数:g(x) 1+sin(k*pi/4*x),实现对该非线性函数的逼近。其中,
分别令k 1,2,4进行仿真,通过调节参数 (如隐藏层节点个数等)得出信号的频率与隐层节点之间,隐
层节点与函数逼近能力之间的关系。
1.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(非线性函数);
图1 要逼近的非线性函数曲线
1
步骤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(仿真输出--原函数-);
同时绘制网络输出曲线,并与原函数相比较,结果如图2 所示。
图2 未训练网络的输出结果
其中 “ ” 代表要逼近的非线性函数曲线;
“‥‥‥” 代表未经训练的函数曲线;
因为使用newff()函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根
本达不到函数逼近的目的,每次运行的结果也有时不同。
步骤3:网络训练
2
应用train ()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为50,训练精
度设置为0.01,其余参数使用缺省值。训练后得到的误差变化过程如图3所示。
图3 训练过程
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,Performancegoalmet.
从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。
步骤4: 网络测试
对于训练好的网络进行仿真:
y2 sim(net,p);
figure;
plot(p,t,-,p,y1,:,p,y2, --)
title(训练后网络的输出结果);
xlabel(时间);
ylabel(仿真输出);
绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结
果如图4 所示。
3
图4 训练后网络的输出结果
文档评论(0)