PDA

查看完整版本 : [求助]newff创建的BP网络 附代码


xusean
2009-01-20, 16:48
%输入
P = [1.24 1.36 1.38 1.38 1.38 1.4 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.3;
1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96];
%输出
T = [1 1 1 1 1 1 1 1 1 0 0 0 0 0 0];
%测试样本
p = [1.24, 1.28, 1.4; 1.8, 1.84, 2.04];
net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingdx');
net.trainParam.show=50;
net.trainParam.lr=0.1;
net.trainParam.lr_inc=1.05;
net.trainParam.epochs=300;
net.trainParam.goal=0.01;
%net.trainParam.mu_dec=0.1;
%net.trainParam.mu_inc=7;
[net,tr]=train(net,P,T);
A=sim(net,P);
a=sim(net,p);
可以正常运行得到性能曲线

但是把traingdx改为trainlm函数,加上trainlm函数的参数net.trainParam.mu_dec=0.1;
net.trainParam.mu_inc=7;去掉traingdx函数的参数,即:
%输入
P = [1.24 1.36 1.38 1.38 1.38 1.4 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.3;
1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96];
%输出
T = [1 1 1 1 1 1 1 1 1 0 0 0 0 0 0];
%测试样本
p = [1.24, 1.28, 1.4; 1.8, 1.84, 2.04];
net=newff(minmax(P),[5,1],{'logsig','purelin'},'trainlm');
net.trainParam.show=50;
% net.trainParam.lr=0.1;
% net.trainParam.lr_inc=1.05;
net.trainParam.epochs=300;
net.trainParam.goal=0.01;
net.trainParam.mu_dec=0.1;
net.trainParam.mu_inc=7;
[net,tr]=train(net,P,T);
A=sim(net,P);
a=sim(net,p);
程序就不能运行。提示错误
Error in ==> C:\MATLAB6p5\toolbox\nnet\nnet\@network\subsasgn.m (setTrainFcn)
On line 1459 ==> net.trainParam = feval(trainFcn,'pdefaults');
Error in ==> C:\MATLAB6p5\toolbox\nnet\nnet\@network\subsasgn.m
On line 405 ==> [net,err]=setTrainFcn(net,trainFcn);
Error in ==> C:\MATLAB6p5\toolbox\nnet\nnet\newff.m
On line 160 ==> net.trainfcn = btf;
只改变了神经网络的训练函数,为什么就不能正常运行了,是trainlm有什么特殊的地方么?本人初学,请教大家,谢谢。