caochongwen 发表于 2006-7-29 09:19

BP网络每次的结果都不一样

我在用BP模型时,每次的结果都不一样,我已经把权值、阀值调成固定值了,可是结果还是每次都不一样。这是为什么呢?
希望能帮我解决一下。
非常感谢!

[ 本帖最后由 ericlin 于 2006-8-10 16:05 编辑 ]

realhappy 发表于 2006-7-29 18:27

训练数据和测试数据是不是一样的。

lysky2000 发表于 2006-8-3 09:45

请问楼主:你是如何在bp中使用自己初始化的权重和阀值的?在开始初始化的时候,如何定义?谢谢~~!

ericlin 发表于 2006-8-10 15:45

你的前提是什么,是每次训练时初始化的时候没有随机赋值,而是用了自己定义的权值和阈值?

caochongwen 发表于 2006-8-15 09:56

BP网络每次的结果都不一样

p=[-0.5 -0.5 0.3 0;-0.50.5 -0.5 1 ];
t=;
net=newff(minmax(p),,{'tangsig','purelin'},'trainlm');
net=init(net);
固定权值阀值
inputWeights=[];
inputbias=[];
layerWeights=[];
inputbias=[];
当前输入层权值阀值
inputWeights=net.IW{1,1};
inputbias=net.b{1};
网络层权值阀值
layerWeights=net.LW{2,1};
layerbias=net.b{2};



net=train(net,p,t);
y=sim(net,p)
即使是上面简单的程序,每次计算结果都不一样!我想让每次运行的结果是一致的,所以我加上输入层、网络层的权值阀值,并把权值阀值固定。可是结构还是不一样。

happy 发表于 2006-8-15 10:14

结果不一样是很正常,由于神经网络初始化是随机的
建议在训练的过程中记录下一些初始值,这样训练效果理想就可能重复得到相同的结果

caochongwen 发表于 2006-8-15 16:55

我不明白,需要记录哪些初始值

caochongwen 发表于 2006-8-15 17:06

在用bp模型进行预测时,误差会特别大!甚至出现的结果不能叫误差!

load p50.mat
load t50.mat

p=p50',
t=t50',

net=newff(minmax(p),,{'tansig','purelin'},'trainlm');
net=initlay(net);

给权值阀值赋值
inputWeights=
inputbias=[-9.854436918404796;3.570030805596352;-1.773581770780901;-4.557901632847051;-5.862101554924009;-6.635235020149124;2.115174813461072;4.275858630573478;]
layerWeights=
layerbias=


inputWeights=net.IW{1,1}
inputbias=net.b{1}
layerWeights=net.LW{2,1}
layerbias=net.b{2}



net.trainParam.epochs=2000;
net.trainParam.goal=0.1;
net.performFcn = 'msereg';
net.trainParam.show=100;



net=train(net,p,t);
a=sim(net,p);

E=t-a;
MSE=mse(E);
e=abs((t-a)./t);

figure(3)

=postreg(a,t);

figure(4)
i=1:1:50;
plot(i,t,'+',i,a,'o','MarkerSize',3);

p_test=;
t_test=sim(net,p_test);
这是我的程序代码
我在预测时,调一组数据进行预测,数据不是50组中的,预测结果误差特大
为什么会出现这样的问题呢?

happy 发表于 2006-8-15 17:08

每次初始化网络时都是随机的,因为newff()函数具有机性,所以训练终止时的误差也不完全相同,结果训练后的权植和阀也不完全相同(当然总体上来讲大致是一样的),因此每次训练后的结果也略有不同。

只有每次的结果不一样,才有可能找到比较理想的网络,找到之后用命令save filename net;保存网络就行了。调用时用命令load filename net;

caochongwen 发表于 2006-8-16 08:41

我在预测时,调一组数据进行预测,数据不是50组中的,预测结果误差特大
为什么会出现这样的问题呢?
我该如何处理呢?

happy 发表于 2006-8-16 09:15

你是说训练后返回的权植和阀值相差特别大?

caochongwen 发表于 2006-8-16 09:56

我是说我用另外一组p值,预测t时,
误差特别大

caochongwen 发表于 2006-8-16 10:03

我得到理想的网络后,权值阀值已确定
如何得到p与t之间的关系式

happy 发表于 2006-8-17 18:47

神经网络训练的过程中,由于BP算法的特性决定了其在训练时,收敛结果具有如下几个特性:

1. 对初值的敏感性,也就是改变初值时收敛结果可能发生变化;
2. 算法收敛收敛后,得到的结果不一定是全局最优

所以出现你所说的现象是正常的,是难以回避的,当然也有一些改进,但都只是对第2种情况的改善

ericlin 发表于 2006-8-18 10:55

原帖由 caochongwen 于 2006-8-16 10:03 发表
我得到理想的网络后,权值阀值已确定
如何得到p与t之间的关系式

t=f(W*p+b)
页: [1] 2
查看完整版本: BP网络每次的结果都不一样