作业帮 > 综合 > 作业

matlab 2013 BP神经网络 拟合函数

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/05/09 08:19:50
matlab 2013 BP神经网络 拟合函数
按照书上抄的,效果却不好
p=-1:0.1:0.9;
t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504...
    0.248 1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);          %原始数据归一化
net=newff([-1 1],[15,1],{'tansig','purelin'},'trainbr','learngdm'); %设置网络,建立相应的BP网络
net.trainParam.show=10; % 训练网络
net.trainParam.lr=0.05;\x09\x09\x09\x09\x09\x09\x09\x09%学习率
net.trainParam.epochs=2500;
net.trainParam.goal=0.001;
[net,tr]=train(net,pn,tn); 
r=sim(net,p);
plot(p,r,p,t,'*');

已解决 没有清空之前的参数 我晕
matlab 2013 BP神经网络 拟合函数
Warning: PREMNMX is an obsolete function.Warning: NEWFF used in an obsolete way. PREMNMX和NEWFF在高版本中,这两个函数已经被取代或者调用格式发生了变化.另外,相同的设置,每次运行的结果也会不同.这是我用工具箱大概做出的结果.

再问: 恩恩 但是不知道新版的归一化函数怎么用呢
好像老版的确实会出问题
再答: 第一,不是在任何情况下都需要归一化。只有当数据区间分布很大,数据间差别很大时,才需要归一化。在这个例子中,我觉得不用归一。
第二,使用[Y,PS] = mapminmax(X,YMIN,YMAX),具体用法可在网上查看。
再问: 还想再问一下 那怎么把拟合好的网络应用到其他区间上?
比如 我在[0,10]上拟合了一个函数,想预测他在[10,20]上的取值。由于后面的样本会改变输入的最大值,所以不知道归一化该怎么弄呢?
再答: 使用net=newff(...)%训练网络
output=sim(net,px)%得出预测结果,px为输入
个人觉得,就数据预测而言,任何方法的外推能力都具有不可确定性。因此尽管神经网络的预测能力较强,但是在[10,20]上得出的结果是具有很小价值的,除非有其他已知的约束条件辅助。

我以前的做法是对包括预测输入的数据在内,进行整体标准化。然后使用归一后的已知数据重新建立网络。