马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
首先说明,我是一个BP神经网络的初学者,近来因毕业论文需要,现学现用,在本论坛诸多网友的帮忙下,以及参考了本论坛相关贴子,试着编写了一段BP神经网络的程序,但现主要问题为,在训练过程,精度极佳,而在检测时,效果极差
许多网友解释是,是不是输入目标值与输出目标值整体上相关性就不好,于是我自己编了一个关系式:Y=X1+10X2+X3^1.2+X4^0.5,其中X1,X2,X3,X4为输入样本,Y为输出目标值,担心出现本论坛中出现的许多网友所说的训练样本量太少,我自己编了100组数据,前90组用来训练,后10组用来检测
我想,这样的样本组合,应该是百分百完美了吧,相关性R2都达到1了,而且样本的训练量应该也肯定够多了,结果,还是出现上述的现象,即训练时,效果极好,而预测时,精度极差
代码如下:
clear
P=load('p0.txt');
T=load('t0.txt');
PP=load('p1.txt')
TT=load('t1.txt');
[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T);
net=newff(minmax(Pn),[5,1],{'tansig','purelin'},'trainlm');
net=init(net);
net.trainParam.epochs=5000; %设置网络训练次数为5000次
net.trainParam.show=50; %设置每隔50次显示当前网络训练误差
net.trainParam.goal=0.001; %设置网络训练目标误差为0.001
[net,tr]=train(net,Pn,Tn); %利用函数train()对网络进行训练
y=sim(net,Pn); %利用函数sim()对训练年份和检验年份进行仿真
Y=postmnmx(y,min(T),max(T)) %%反归一化
AA=sim(net,PP);
T1=1:1:90;
figure;
plot(T1,T,'b',T1,Y,'r');
figure;
T2=1:1:10;
plot(T2,TT,'b',T2,AA,'r');
[ 本帖最后由 museum 于 2007-7-14 23:13 编辑 ] |