我的BP网络训练后的结果很稳定,但是预测的结果每次程序运行不一样,哪里的问题,我将程序贴在下面,求高人指点。
P=[1 1 1 1 1 1 1 0 0 0 0 0 0 0;
23.41 32.03 32.03 35.0 35.0 23.41 23.41 23.41 23.41 32.03 35.0 35.0 23.41 23.41;
0.24 0.25 0.17 0.25 0.17 0.25 0.17 0.25 0.17 0.25 0.25 0.17 0.25 0.16;
460 460 460 460 460 235 235 460 460 460 460 460 235 235;
460 460 460 460 460 235 235 460 460 460 460 460 235 235;];
T=[0.1 0.05 0.05 0.03 0.08 0.11 0.12 0.08 0.03 0.05 0.05 0.05 0.1 0.1;
0.12 0.1 0.2 0.05 0.1 0.2 0.26 0.1 0.05 0.08 0.08 0.09 0.12 0.15;
0.25 0.2 0.3 0.15 0.2 0.38 0.45 0.12 0.12 0.1 0.1 0.12 0.15 0.2;
0.4 0.25 0.55 0.28 0.3 0.55 0.58 0.15 0.21 0.12 0.12 0.15 0.17 0.24;
0.58 0.4 0.8 0.5 0.5 0.65 0.7 0.24 0.3 0.18 0.15 0.18 0.2 0.28];
[pn,meanp,stdp,tn,meant,stdp]=prestd(P,T);
m=15;n=10;
net=newff(minmax(pn),[m,n,5],{'tansig','tansig','purelin'},'traingdx');
% 训练网络
net.trainParam.show=10;
net.trainParam.epochs=10000;
net.trainParam.goal=1e-5;
net.trainParam.lr=0.01;
net.trainParam.lr_inc=1.05;
net.trainParam.lr_dec=0.7;
net.trainParam.mc=0.95;
net.trainParam.err_ratio=1.04;
net=train(net,pn,tn);
A3=sim(net,pn);
A=poststd(A3,meant,stdt)
c=[1 0;23.41 32.03;0.18 0.17;460 460;460 460];
cn=trastd(c,meanp,stdp);
as=sim(net,cn);
%c1=tansig(W1*cn,B1);c2=tansig(W2*c1,B2);c3=purelin(W3*c2,B3);
aa=poststd(as,meant,stdt)