|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
大家好。能不能帮我看看下面的程序(神经网络方面的 ),误差大的很啊,泛化能力差,而且训练过程中老是出现obsolete的警告。
m_data=[
28.2 33.6 16.4 31.42 84.73 46.1 0.15 25 50 60 ;
28.2 44 15.4 30.24 85.06 46.1 0.15 30 50 60 ;
27.6 85 15.4 17.99 85.4 48.78 0.1 25 40 60 ;
27.6 85.8 14.4 17.69 85.76 48.78 0.15 25 40 60 ;
27.6 100 20 13.4 85.52 48.78 0.15 30 40 60 ;
28.2 30.2 11.6 44.28 84.87 46.1 0.1 25 50 45 ;
28.2 33 12.6 40 84.88 46.1 0.15 25 50 45 ;
28.2 47.2 11.7 30.62 85.01 46.1 0.06 30 50 45 ;
28.2 40.2 12 34.49 85.52 46.1 0.10 30 50 45 ;
28.2 45.4 13.4 31.65 85.2 46.1 0.15 30 50 45 ;
27.6 50 11.8 31.04 84.62 48.78 0.07 25 40 45 ;
27.6 43 12 33.7 85.11 48.78 0.15 25 40 45 ;
27.6 100 19.8 10.89 84.36 48.78 0.1 30 40 45 ;
27.6 100 19.6 10.94 85.94 48.78 0.15 30 40 45 ;
28.2 35.2 12.4 38.55 85.29 46.8 0.07 28 50 40 ;
28.2 31.6 12 41.53 85.62 46.8 0.1 28 50 40 ;
28.2 35.6 14.6 37.54 85.43 46.8 0.12 28 50 40 ;
];
p1=m_data(:,1:5);
t1=m_data(:,6:10);
p=p1';t=t1';
[pn,meanp,stdp,tn,meant,stdt]=prestd(p,t) %预处理
[w1,b1,w2,b2]=initff(pn,13,'tansig',tn,'purelin')
df=10;
me=1000;eg=0.01;
lr=0.1;
tp=[df me eg lr];
[w1,b1,w2,b2,eg,tr]=trainlm(w1,b1,'tansig',w2,b2,'purelin',p,t,tp)
a1=simuff(p,w1,b1,'tansig',w2,b2,'purelin')
c=a1-t
n_data=[
35.4 61.2 23.2 28.54 75.44 45.52 0.1 22 40 20 ;
62 99 36 8.26 70.83 19.17 0.1 14 40 20 ;
61 96 39.2 10.75 74.71 25.74 0.15 16 40 20 ;
27.6 100 23.2 12.86 83.25 48.78 0.1 30 40 60 ;
75.2 80 64 6.5 63.48 21.5 0.12 28 40 15 ;
27.6 47 13 32.69 85.06 48.78 0.1 25 40 45 ;
75.2 70 62 6.94 55.02 21.5 0.08 30 40 10 ;
28.2 42.8 10.6 35.6 85.51 46.8 0.07 28 40 40 ;
75.2 80 54.2 10.33 69.95 21.5 0.08 20 40 15 ;
36.4 88.8 15 18.72 85.32 42.03 0.1 22 40 20 ;
56 80.7 30 27.16 80.78 42.32 0.08 20 40 20 ];
p2=n_data(:,1:5);
p2=p2';
t2=simuff(p2,w1,b1,'tansig',w2,b2,'purelin')
t2n=n_data(:,6:10);
t2m=t2n';
c=t2-t2m
但是程序按下面写法误差小一些,能否将上述程序修改一下达到下面程序的精度呢?为什么差这么远呢?谢谢啦。
m_data=[
28.2 33.6 16.4 31.42 84.73 46.1 0.15 25 50 60 ;
28.2 44 15.4 30.24 85.06 46.1 0.15 30 50 60 ;
27.6 85 15.4 17.99 85.4 48.78 0.1 25 40 60 ;
27.6 85.8 14.4 17.69 85.76 48.78 0.15 25 40 60 ;
27.6 100 20 13.4 85.52 48.78 0.15 30 40 60 ;
28.2 30.2 11.6 44.28 84.87 46.1 0.1 25 50 45 ;
28.2 33 12.6 40 84.88 46.1 0.15 25 50 45 ;
28.2 47.2 11.7 30.62 85.01 46.1 0.06 30 50 45 ;
28.2 40.2 12 34.49 85.52 46.1 0.10 30 50 45 ;
28.2 45.4 13.4 31.65 85.2 46.1 0.15 30 50 45 ;
27.6 50 11.8 31.04 84.62 48.78 0.07 25 40 45 ;
27.6 43 12 33.7 85.11 48.78 0.15 25 40 45 ;
27.6 100 19.8 10.89 84.36 48.78 0.1 30 40 45 ;
27.6 100 19.6 10.94 85.94 48.78 0.15 30 40 45 ;
28.2 35.2 12.4 38.55 85.29 46.8 0.07 28 50 40 ;
28.2 31.6 12 41.53 85.62 46.8 0.1 28 50 40 ;
28.2 35.6 14.6 37.54 85.43 46.8 0.12 28 50 40 ;
];
p1=m_data(:,1:5);
t1=m_data(:,6:10);
p=p1';t=t1';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
n=13;
net=newff(minmax(pn),[n,5],{'tansig','purelin'},'traingdm');
% 训练网络
net.trainParam.show=50;
net.trainParam.lr=0.3;
net.trainParam.mc=0.9;
net.trainParam.epochs=5000;
net=init(net);
net.trainParam.goal=0.1;
%调用TRAINGDM算法训练BP网络
net=train(net,pn,tn);
inputWeights=net.IW{1,1}
inputbias=net.b{1}
layerWeights=net.LW{2,1}
layerbias=net.b{2}
%对BP网络进行仿真
A=sim(net,pn);
E=A-tn;
M=sse(E)
N=mse(E)
B_data=postmnmx(A,mint,maxt)
error=B_data-t
%验证数据
n_data=[
35.4 61.2 23.2 28.54 75.44 45.52 0.1 22 40 20 150;
62 99 36 8.26 70.83 19.17 0.1 14 40 20 150;
61 96 39.2 10.75 74.71 25.74 0.15 16 40 20 150;
27.6 100 23.2 12.86 83.25 48.78 0.1 30 40 60 150;
75.2 80 64 6.5 63.48 21.5 0.12 28 40 15 150;
27.6 47 13 32.69 85.06 48.78 0.1 25 40 45 150;
75.2 70 62 6.94 55.02 21.5 0.08 30 40 10 150;
28.2 42.8 10.6 35.6 85.51 46.8 0.07 28 40 40 150;
75.2 80 54.2 10.33 69.95 21.5 0.08 20 40 15 150;
36.4 88.8 15 18.72 85.32 42.03 0.1 22 40 20 150;
56 80.7 30 27.16 80.78 42.32 0.08 20 40 20 150];
p2=n_data(:,1:5);
p2=p2';
p2n=tramnmx(p2,minp,maxp);
a2n=sim(net,p2n);
a2=postmnmx(a2n,mint,maxt);
a2=a2
b2=n_data(:,6:10);
b2=b2'
c2=a2-b2 |
|