Matlab 版 (精华区)

发信人: hahn (有奇@选择遗忘的自由), 信区: Matlab
标  题: [合集] 神经网络为什么结果总是不稳定呢?
发信站: 哈工大紫丁香 (Sun Aug  6 08:28:59 2006), 站内

────────────────────────────────────────
  petxing (氧气贝贝)               于  (Thu May 18 12:08:58 2006)  说道:

他们告诉我说需要保存权数和域值 
要不然每次结果都有变化 误差很大
% 构造BP神经网络
net=newff(minmax(P),[32,1],{'tansig','logsig'},'trainlm');
% 训练次数为1000,训练目标为0.01,学习速率为0.1
net.trainParam.epochs=100;
net.trainParam.goal=0.001;
net.trainParam.Ir=0.1;
%调用TRAINLM算法训练BP网络
net=init(net)
[net,tr]=train(net,P,T);
w1=net.IW{1,1};
b1=net.b{1,1};
w2=net.IW{2,1};
b2=net.b{2,1};
%保存训练好的网络
fww1=fopen('w1.dat','w');
fwb1=fopen('b1.dat','w');
fww2=fopen('w2.dat','w');
fwb2=fopen('b2.dat','w');
fprintf(fww1,'%6.4f %6.4f\n',w1);
fprintf(fwb1,'%6.4f %6.4f\n',b1);
fprintf(fww2,'%6.4f %6.4f\n',w2);
fprintf(fwb2,'%6.4f %6.4f\n',b2);
fclose(fww1);
fclose(fwb1);
fclose(fww2);
fclose(fwb2);

我没有保存域值吗?


────────────────────────────────────────
  newmajia ((新马甲))            于  (Thu May 18 15:56:39 2006)  说道:


【 在 petxing (氧气贝贝) 的大作中提到: 】
: 他们告诉我说需要保存权数和域值 
: 要不然每次结果都有变化 误差很大
: % 构造BP神经网络
: net=newff(minmax(P),[32,1],{'tansig','logsig'},'trainlm');
: % 训练次数为1000,训练目标为0.01,学习速率为0.1
: net.trainParam.epochs=100;
: net.trainParam.goal=0.001;
: net.trainParam.Ir=0.1;
: ...................
用trainlm训练,每次误差确实都不一样.
根据我的经验,你把训练次数调大一点,训练的误差就会迅速减小.自己可以试一下.




────────────────────────────────────────
  newmajia ((新马甲))            于  (Thu May 18 16:05:58 2006)  说道:

【 在 petxing (氧气贝贝) 的大作中提到: 】
: 他们告诉我说需要保存权数和域值 
: 要不然每次结果都有变化 误差很大
: % 构造BP神经网络
: net=newff(minmax(P),[32,1],{'tansig','logsig'},'trainlm');
: % 训练次数为1000,训练目标为0.01,学习速率为0.1
: net.trainParam.epochs=100;
: net.trainParam.goal=0.001;
: net.trainParam.Ir=0.1;
: ...................
还有ms w2=net.IW{2,1}; 中的IW应该为LW,IW只针对输入层.
另外,你也可以用nntool的图形界面训练网络.这样所有的权值和阀值都是自动存储的.




[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.991毫秒