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)
页面执行时间:2.895毫秒