求大神解答下这个BP网络训练的MATLAB程序为什么不对
clcclearall%下面俩个参数可变k=1;%设置非线性函数的频率n=10;%设置网络隐单元的神经元数目%定义要逼近的非线性函数p=(-1:0.05:1);t=sin...
clc
clear all
%下面俩个参数可变
k=1;%设置非线性函数的频率
n=10;%设置网络隐单元的神经元数目
%定义要逼近的非线性函数
p=(-1:0.05:1);
t=sin(k*pi*p);
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel('输入向量');
ylabel('非线性函数目标输出量');
%建立相应的bp网络
net=newff(p,t,[n,1],{'tansig','purelin'},'trainlm');
%对没有训练的网络进行仿真
y1=sim(net,p);
%训练网络
net.trainParam.epochs=50;%最大训练次数
net.trainParam.goal=50;%训练目标误差
net=train(net,p,t);
%对训练后的网络进行仿真
y2=sim(net,p);
%绘制训练前后仿真结果对比
figure
plot(p,t,'-',p,y1,'--',p,y2,'*')
title('训练前后对比');
xlabel('输入向量');
ylabel('输出向量');
legend('目标函数输出向量','未训练BP网络输出','已训练BP网络输出'); 展开
clear all
%下面俩个参数可变
k=1;%设置非线性函数的频率
n=10;%设置网络隐单元的神经元数目
%定义要逼近的非线性函数
p=(-1:0.05:1);
t=sin(k*pi*p);
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel('输入向量');
ylabel('非线性函数目标输出量');
%建立相应的bp网络
net=newff(p,t,[n,1],{'tansig','purelin'},'trainlm');
%对没有训练的网络进行仿真
y1=sim(net,p);
%训练网络
net.trainParam.epochs=50;%最大训练次数
net.trainParam.goal=50;%训练目标误差
net=train(net,p,t);
%对训练后的网络进行仿真
y2=sim(net,p);
%绘制训练前后仿真结果对比
figure
plot(p,t,'-',p,y1,'--',p,y2,'*')
title('训练前后对比');
xlabel('输入向量');
ylabel('输出向量');
legend('目标函数输出向量','未训练BP网络输出','已训练BP网络输出'); 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询