PDA

查看完整版本 : [MATLAB基础] 训练结果与实际误差不符,是为什么啊


hfl
2009-07-15, 23:25
function f = parity()
clear all;
% 输入样本
% 输出样本
%T = 1.5*(exp(-30.*(P-0.25).^2)+sin(pi.*(P-0.2)).^2);
%Tt = 1.5*(exp(-30.*(Pt-0.25).^2)+sin(pi.*(Pt-0.2)).^2);
%P =[ 10 20 30 40 50 60 70 80 10 20 30 40 50 60 70 80 10 20 30 40 50 60 70 80 10 20 30 40 50 60 70 80 10 20 30 40 50 60 70 80 10 20 ;
% 150 150 150 150 150 150 150 150 200 200 200 200 200 200 200 200 250 250 250 250 250 250 250 250 300 300 300 300 300 300 300 300 350 350 350 350 350 350 350 350 400 400 ]
%T =[ 2.2 1 0.9 0.7 0.7 0.7 0.8 0.9 7 1 1.2 0.9 0.7 0.7 0.9 1.2 13.5 1.6 1.1 0.7 0.7 0.7 0.9 1.5 26.4 3.1 1.6 1 0.9 0.9 1.3 2.4 40.1 3.4 1.4 0.8 0.7 0.7 1.3 1.2 45.7 6.2 ]
P=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ;
0 0 0 0 0 0 0 0 0 0 0 0.066666667 0.066666667 0.066666667 0.066666667 0.066666667 0.066666667 0.066666667 0.066666667 0.066666667 0.066666667 0.066666667 0.133333333 0.133333333 0.133333333 0.133333333 0.133333333 0.133333333 0.133333333 0.133333333 0.133333333 0.133333333 0.133333333 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.266666667 0.266666667 0.266666667 0.266666667 0.266666667 0.266666667 0.266666667 0.266666667 0.266666667 0.266666667 0.266666667 0.333333333 0.333333333 0.333333333 0.333333333 0.333333333 0.333333333 0.333333333 0.333333333 0.333333333 0.333333333 0.333333333 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.466666667 0.466666667 0.466666667 0.466666667 0.466666667 0.466666667 0.466666667 0.466666667 0.466666667 0.466666667 0.466666667 0.533333333 0.533333333 0.533333333 0.533333333 0.533333333 0.533333333 0.533333333 0.533333333 0.533333333 0.533333333 0.533333333 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.666666667 0.666666667 0.666666667 0.666666667 0.666666667 0.666666667 0.666666667 0.666666667 0.666666667 0.666666667 0.666666667 0.733333333 0.733333333 0.733333333 0.733333333 0.733333333 0.733333333 0.733333333 0.733333333 0.733333333 0.733333333 0.733333333 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.866666667 0.866666667 0.866666667 0.866666667 0.866666667 0.866666667 0.866666667 0.866666667 0.866666667 0.866666667 0.866666667 0.933333333 0.933333333 0.933333333 0.933333333 0.933333333 0.933333333 0.933333333 0.933333333 0.933333333 0.933333333 0.933333333 1 1 1 1 1 1 1 1 1 1 1 ];
T=[0.00849617672047579 0.007646559 0.006796941 0.006796941 0.006796941 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.018691589 0.009345794 0.007646559 0.007646559 0.007646559 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.059473237 0.017841971 0.010195412 0.010195412 0.010195412 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.114698386 0.022939677 0.013593883 0.01104503 0.009345794 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.005947324 0.224299065 0.034834325 0.028887001 0.016992353 0.013593883 0.009345794 0.008496177 0.005947324 0.005947324 0.005947324 0.005947324 0.340696686 0.063721325 0.030586236 0.019541206 0.011894647 0.008496177 0.006796941 0.006796941 0.005947324 0.005947324 0.005947324 0.388275276 0.071367884 0.044180119 0.034834325 0.020390824 0.0144435 0.01104503 0.009345794 0.008496177 0.008496177 0.009345794 0.443500425 0.104502974 0.054375531 0.041631266 0.021240442 0.015293118 0.011894647 0.010195412 0.008496177 0.008496177 0.008496177 0.513169074 0.173322005 0.086661003 0.044180119 0.024638912 0.018691589 0.015293118 0.01104503 0.009345794 0.008496177 0.008496177 0.582837723 0.198810535 0.104502974 0.049277825 0.038232795 0.022090059 0.017841971 0.01104503 0.010195412 0.010195412 0.009345794 0.651656754 0.214103653 0.121495327 0.077315208 0.048428207 0.041631266 0.018691589 0.013593883 0.010195412 0.010195412 0.009345794 0.721325404 0.231096007 0.134239592 0.097706032 0.061172472 0.042480884 0.023789295 0.0144435 0.010195412 0.010195412 0.010195412 0.790994053 0.281223449 0.163126593 0.127442651 0.112149533 0.060322855 0.040781648 0.032285472 0.022939677 0.021240442 0.016992353 0.860662702 0.313593883 0.191163976 0.152931181 0.129141886 0.107051827 0.041631266 0.038232795 0.022939677 0.020390824 0.018691589 0.930331351 0.34664401 0.239592184 0.226847918 0.215802889 0.113848768 0.054375531 0.053525913 0.041631266 0.040781648 0.039082413 1 0.379779099 0.367034834 0.349192863 0.177570093 0.146983857 0.127442651 0.120645709 0.064570943 0.061172472 0.053525913 ]
% [P,minp,maxp,T,mint,maxt]=premnmx(P,T);
% 隐层节点数
s1 = 4;
s2 = 1;
% 输出层节点数
net=newff(minmax(P),[s1 s2],{'logsig' 'purelin'},'trainrp');
net.trainParam.epochs=12000;
net.trainParam.goal=0.0001;
net.trainParam.lr = 0.68;
%目标误差
W1 = net.iw{1,1};
W2 = net.lw{2,1};
B1 = net.b{1};
B2 = net.b{2};
% net.lw{2,1} = lw21;
% net.b{1,1} = b11 ;
% net.b{2,1} = b21;
tic
% 训练网络
net = train(net,P,T);
toc
w1 = net.iw{1,1};
w2 = net.lw{2,1};
b1 = net.b{1};
b2 = net.b{2};
% 仿真运行,得到测试样本的输出
% At = sim(net,Pt);
%set(gcf, 'Color', [1,1,1]);
%plot(Pt,Tt);
%hold on;
%plot(Pt,At,'r--');
save('MTM_Sinok','net');

训练完的截图如下:
http://www.ilovematlab.cn/attachments/month_0907/20090715_b09d4098b81df89c3977n4L5MaqZ5oSr.jpg
可以看到虽然没有收敛,但误差已经到了0.0002529,可以我用At = sim(net,Pt);测试样本数据,误差还是很大,远远不只0.0002529,是什么原因,请大家帮忙分析