使用BP神经网络实现函数逼近
1 一元函数逼近
1.1 待逼近函数

1.2 代码
clear,clc
p=[-4:0.1:4]; %神经网络输入值
t=sin(0.5*pi*p)+sin(pi*p); %神经网络目标值
n=15; %隐藏层神经元个数
net=newff(minmax(p),[1,n,1],{'tansig','tansig','purelin'},'trainlm'); %建立网络结构
net.trainParam.epochs=200; %最大训练步数
net.trainParam.goal=0.1; %最大训练误差
net=train(net,p,t); %训练网络
y=net(p); %神经网络输出值
plot(p,t,'*',p,y,'-')
title('使用BP神经网络函数逼近');
xlabel('输入值');
ylabel('目标值/输出值');
mse=mse(y,t) %实际误差
1.3 运行结果


MSE=0.0828
2 二元函数逼近
2.1 待逼近函数

2.2 代码
clear,clc
t=[0:0.1:10*pi]; %辅助参数
x=(t+0.5*pi).*sin(t+0.5*pi); %神经网络输入值(指标1)
y=(t+0.5*pi).*cos(t+0.5*pi); %神经网络输入值(指标2)
z=1.5*t; %神经网络目标值
n=25; %隐藏层神经元个数
net=newff(minmax([x;y]),[2,n,1],{'tansig','tansig','purelin'},'trainlm'); %建立网络结构
net.trainParam.epochs=500; %最大训练步数
net.trainParam.goal=0.5; %最大训练误差
net=train(net,[x;y],z); %训练网络
zf=net([x;y]); %神经网络输出值
plot3(x,y,z,'*',x,y,zf,'r-')
title('使用BP神经网络函数逼近');
xlabel('输入值(指标1)');
ylabel('输入值(指标2)');
zlabel('目标值/输出值')
mse=mse(zf,z) %实际误差
2.3 运行结果


MSE=0.4959
声明:本文转自使用BP神经网络实现函数逼近

浙公网安备 33010602011771号