BP神经网络的函数逼近

给出一个非线性的函数,建立BP神经网络进行拟合图像,其中隐藏神经元的数目为,可以设定。

%BP神经网络的函数逼近
k=2;
x=[-1:.05:8];
f=1+sin(k*pi/2*x);

%建立BP神经网络结构
%隐藏层为5 未训练参数
n=10;
net=newff(minmax(x),[n,1],{'tansig','purelin'},'trainlm');
y1=sim(net,x);
figure;
plot(x,f,'-',x,y1,':');
title('要逼近的非线性函数');
xlabel('时间');
ylabel('原函数和仿真函数');

%训练BP神经网络
net.trainParam.epochs=200;
net.trainParam.goal=0.2;
net=train(net,x,f);
y2=sim(net,x);
figure;
plot(x,f,'-',x,y1,':',x,y2,'--');
title('训练后的网络输出');
xlabel('时间');
ylabel('仿真函数');

第一次建立了BP神经网络,tansig和purelin分别是隐藏层神经元激活函数和输出层神经元激活函数,trainlm是训练函数,但是未经过训练的网络中权值和阈值是随机的,所以误差非常大。
在这里插入图片描述

于是开始训练(取神经元个数n为5)
在这里插入图片描述

可以看到,训练后呈现出来的逼近曲线已经开始逼近原函数了,但是仍然拟合度较低,所以修改n的值为10,再训练一次。
在这里插入图片描述
可以看到,这时的逼近函数已经非常拟合于原函数了,精度达到了一定高度。

在这里插入图片描述
在这里插入图片描述
参考资料:
Matlab的BP神经网络工具箱及其在函数逼近中的应用
补充:BP神经网络工具箱介绍
BP神经网络学习规则是不断地调整神经网络的权值和偏值,使得网络输出的均方误差和最小。下面是关于一些BP神经网络的创建和训练的名称:

(1)newff:创建一前馈BP网络(隐含层只有一层)

(2)newcf:创建一多层前馈BP网络(隐含层有多层)

(3)train:训练一个神经网络

(4)sim:仿真一个神经网络

  • 2
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.zwX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值