查看: 9869|回复: 7|关注: 0

[已答复] Matlab如何解决神经网络每次训练结果不同的问题?

[复制链接]

新手

13 麦片

财富积分


050


94

主题

297

帖子

0

最佳答案
QQ
发表于 2009-12-6 23:08:34 | 显示全部楼层 |阅读模式
各位高手,我每次用神经网络 训练 出来的结果不同,
比如我这次算出来的结果,在下次训练过程中,如果我想让其他的人看我这次结果,如何用函数调用??
谢谢了!
海纳百川,气吞山河!

入门

136 麦片

财富积分


50500


43

主题

2120

帖子

26

最佳答案
  • 关注者: 27
发表于 2009-12-7 07:52:06 | 显示全部楼层
用save net把网络存储,下次用用load就行了

新手

17 麦片

财富积分


050


61

主题

274

帖子

1

最佳答案
  • 关注者: 9
发表于 2009-12-7 09:51:59 | 显示全部楼层
每次训练之后,权值都会不一样,所以得到的结果就不一样

新手

10 麦片

财富积分


050


17

主题

216

帖子

1

最佳答案
发表于 2009-12-7 10:59:25 | 显示全部楼层
每次训练的初始权值不同,都是随机的,所以结果有所出入

入门

128 麦片

财富积分


50500


38

主题

392

帖子

30

最佳答案
  • 关注者: 11
发表于 2009-12-7 19:09:37 | 显示全部楼层
神经网络matlab程序每次运行结果不同的一点看法

因为每次的结果不一样,才有可能找到比较理想的结果啊
找到比较好的结果后,用命令save filename net;保存网络,
可使预测的结果不会变化,调用时用命令load filename net;
取p_test=[   ];
t_test=[   ];
t=sim(net,p_test);
err=t_test-t;
plot(p_test,err);
选择误差小的保存网络
save filename net
以后调用时
load filename net
p_test=[ ];
t_test=[ ];
t=sim(net,p_test);
err=t_test-t;
plot(p_test,err):
因为每次初始化网络时都是随机的,而且训练终止时的误差也不完全相同,结果训练后的权植和阀也不完全相同(大致是一样的),所以每次训练后的结果也略有不同
举个例子,这样初始化就能使网络的输出结果是一样的,另外也可以给网络特定的权值,一种方法是把预测结果后的效果比较好的权值做为初值
p=[0.8726 0.9441 0;0 0 0.7093;0.7378 0.7093 0.3795;0.6416 0.3795 0.7031;1 0.7031 0.4241;0.7774 0.4241 0.9559;0.9559 0.5012 0.7052;...
0.8209 0.7052 0.4983;0.6011 0.4983 1;]';
t=[0 0.7378 0.6416 1 0.7774 0.5012 0.8209 0.6011 0.9350];
rand('state',0);
net=newff(minmax(p),[6,1],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=2000;
net.trainParam.goal=0.001;
net=train(net,p,t);
y=sim(net,p);
error=y-t;
res=norm(error);
p_test=[0.9350 1 0.6236;]';
t_test=[ 0.8027]
a=sim(net,p_test)
原帖在这里 http://www.2nsoft.cn/bbs/read.php?tid=6319&keyword

新手

8 麦片

财富积分


050


23

主题

173

帖子

0

最佳答案
  • 关注者: 1
发表于 2009-12-7 20:34:41 | 显示全部楼层
由于神经网络的权值和阈值是随机产生的,故其结果也是不一样的

新手

5 麦片

财富积分


050


0

主题

3

帖子

0

最佳答案
发表于 2019-1-30 16:41:31 | 显示全部楼层
shi01fg 发表于 2009-12-7 07:52
用save net把网络存储,下次用用load就行了

连续训练20次咋样把每次的net都保存了
for j=1:1:20
    T=[1:3];
% 构建BP神经网络
    net=newff(inputn,output_train,17);
    net.trainParam.epochs=2000;
    net.trainParam.lr=0.1;
    net.trainParam.goal=0.00004;
    % BP神经网络训练
    net=train(net,inputn,output_train);
    save('net');
这样保存的是最后一次训练的net,实在不知咋样把每次训练的net都保存好

新手

5 麦片

财富积分


050


0

主题

3

帖子

0

最佳答案
发表于 2019-1-30 16:43:03 | 显示全部楼层
1481577959 发表于 2019-1-30 16:41
连续训练20次咋样把每次的net都保存了
for j=1:1:20
    T=[1:3];

不好意思,第二行T=[1:3]是多余的,忘了删除了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表