求助:BP神经网络
我在做BP神经网络时总出现如下结果:Maximum MU reached, performance goal was not met.
调整隐层数依然是这样,也就是说我的目标误差是0.001,但是神经网络算得的误差总只能达到0.1,请问这是为什么? 归一一下,或者权值用ga优化一下 把代码贴出来看看. 或者有可能是你的输出函数不对 说明样本的相关性不好,再有就是要数据归一化!~
源程序代码如下
load shangxian.txt; %加载数据文件load cedian.txt; %加载数据文件
load s00.txt; %加载数据文件
a=s00;
b=(shangxian(:,2:3));
c=(cedian(1:67,2:3));
d=zeros(1090,1);
e=(6894.76*a(1,3:69))';
tt=;
=premnmx(',tt');%归一化ptest,p,ttest
for i=1:67
if (abs(tn(1,i)))<1.0e-3
tn(1,i)=0;
else
end
end
for m=1:2
for j=1:67
if (abs(pn(m,j)))<1.0e-3
pn(m,j)=0;
else
end
end
end
pt=(pn(:,1:67));
p=(pn(:,68:1157));
tt=tn(1,1:67);
s=3:18;
res=1:16;
for i=1:16
net=newff(minmax(pt),,{'tansig','logsig'},'trainlm'); %建立网络
net.trainParam.epochs=1000;
net.trainParam.goal=0.001;
net=init(net);
net=train(net,pt,tt);
wind=sim(net,pt); %网络仿真
error=wind-tt;
res(i)=norm(error);
end
w=sim(net,p);
we=(postmnmx(w,mint,maxt))'; %反归一化
save we.txt we -ascii 换了一下训练函数---traingdx---结果也不好.
所以, 原因可能是你的矩阵太奇异,或者是归一化出了问题.
建议自己调试一下,查一下是否如此. net=newff(minmax(pt),,{'tansig','logsig'},'trainlm');
logsig是不是输出函数,换成线性函数purelin试试,记不太清了
[ 本帖最后由 sffei 于 2007-4-25 21:19 编辑 ] 归一化并没有问题.可能是数据太无规律吧.因为如果没有中间的两个FOR循环,就会WARNING矩阵奇异,但是加了FOR之后,就没有这个warning了.而且我看了一下归一化的数据,并没有什么问题.所有的值均在[-1,1]之间. 把数据归一到之间,恐怕会有好的发现 精度要求是不是太高了
另外你用的BP网络是没有改进的?
也有可能是训练次数少
页:
[1]