求解:如何用matlab设计BP神经网络实现非线性函数映射?
3.1.2试设计BP神经网络实现非线性函数映射。
实验目的
掌握matlab软件环境下的BP网络设计,理解BP网络的非线性映射能力。
二、实验内容
用BP网络解决函数非线性映射问题:函数y=x1/2 ; y=x2 ; y=sin(x)
三、实验步骤
(1)训练集可取{0.1、0.3、0.5、0.7、0.9、1};测试集可取:{0.2、0.4、0.6、0.8}
(2)根据问题的需要,利用matlab软件设计网络的隐层节点数和训练参数,开始训练;
(3)在预测输入窗口键入输入向量,考察预测输出窗口的输出与教师信号之间的偏差,考察BP网络是否可以实现函数非线性映射
我写的代码:
p=0.1:0.1:1;
t=sin(p);
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
net=newff(minmax(pn),[3,1],{'logsig','purelin'},'trainlm');
net.trainParam.show=20;
net.trainParam.epochs=2000;
net.trainParam.lr=0.1;
net.trainParam.goal=1e-4;
net.trainParam.mc=0.8;
[net,tr]=train(net,pn,tn);
tp=0.2:0.2:0.8;
[ttp]=tramnmx(tp,minp,maxp)%对测试数据进行归一化
Tp=sim(net,ttp)
Tp=postmnmx(Tp,mint,maxt); %对预测数据进行反归一化
plot(p,T,'r',tp,Tp,'o')%绘图
legend('测试期望值','测试仿真值')
这样是正确的吗?求指导,谢谢!