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是训练函数,但是未经过训练的网络中权值和阈值是随机的,所以误差非常大。
BP神经网络的函数逼近_第1张图片

于是开始训练(取神经元个数n为5)
BP神经网络的函数逼近_第2张图片

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

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

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

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

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

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

你可能感兴趣的:(【深度学习/神经网络】Deep,Learning,神经网络,深度学习,机器学习)