24小时热门版块排行榜    

查看: 694  |  回复: 0

lh349677499

新虫 (初入文坛)

[求助] BP神经网络预测误差很大,怎么回事

一组数据从33衰减到7,做输入;对应的输出为1:50;用BP神经网络预测当输入为0时,输出的值为多少,要怎么做?
本人的程序如下,预测出来的结果在45.5左右,感觉按趋势,当输入为0的时候,输出应该在65-80之间,误差这么大,是怎么回事?求指导


clc;
clear all;
Er=[33.19;30.06;29.08;27.92;25.78;23.87;22.10;19.60;19.64;19.07;18.90;17.85;17.26;16.23;13.37;12.65;12.22;11.96;12.37;12.31;12.42;12.70;13.42;12.65;11.66;11.48;11.70;11.53;12.12;10.01;9.85;8.25;8.37;8.39;8.70;7.25;8.83;9.20;8.76;8.79;8.66;8.75;7.62;8.24;7.931;7.36;7.61;7.261;7.19;7.22];
p =Er;
t = 1:50;
p = p';
%利用premnmx函数对数据进行归一化
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 对于输入矩阵p和输出矩阵t进行归一化处理
dx=[-1,1];                   %归一化处理后最小值为-1,最大值为1
%BP网络训练
net=newff(minmax(pn),[11,1],{'tansig','purelin'},'trainlm');

net.trainParam.Lr=0.1;                 %学习速度为0.1
net.trainParam.epochs=500;           %最大训练1000次
net.trainParam.goal=1e-3;     %均方误差
[net,tr]=train(net,pn,tn);                   %开始训练,其中pn,tn分别为输入输出样本
%利用原始数据对BP网络仿真
an=sim(net,pn);           %用训练好的模型进行仿真
a=postmnmx(an,mint,maxt); % 把仿真得到的数据还原为原始的数量级;

p_test= 0;
p_test = p_test';
pn_test=tramnmx(p_test,minp,maxp);
tn_test=sim(net,pn_test);
t_test=postmnmx(tn_test,mint,maxt)

[ Last edited by lh349677499 on 2014-12-11 at 15:55 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 lh349677499 的主题更新
信息提示
请填处理意见