找回密码
 注册
Simdroid-非首页
查看: 70|回复: 1

大家帮忙解决:BP网络的测试误差怎么这么大

[复制链接]
发表于 2010-5-1 11:55:41 | 显示全部楼层 |阅读模式 来自 上海嘉定区
这是代码,大家运行看看,分析一下原因,先谢过了
s=[0.4500,0.4810,0.5120,0.5430,0.5740,0.6050,0.6360,0.6670,0.6980,0.7290,0.7600,0.7910,0.8220,...
   0.8530,0.8840,0.9150,0.9460,0.9770,1.0080,1.0390,1.0700,1.1010,1.1320,1.1630,1.1940,1.2250,...
   1.2560,1.2870,1.3180,1.3500];
m=[1.6080,1.2360,1.8250,1.4530,1.0810,1.6700,1.2980,1.8870,1.5150,1.1430,1.7320,1.3600,...
   1.9500,1.5770,1.2050,1.7940,1.4220,1.0500,1.6390,1.2670,1.8560,1.4840,1.1120,1.7010,...
   1.3290,1.9180,1.5460,1.1740,1.7630,1.3910];
h=[1.0622,0.9064,0.7516,1.1312,0.9752,0.8204,1.2000,1.0450,0.8892,0.7344,1.1138,0.9580,...
   0.8032,1.1828,1.0268,0.8720,0.7172,1.0966,0.9408,0.7860,1.1656,1.0096,0.8548,0.7000,...
   1.0794,0.9236,0.7688,1.1484,0.9924,0.8367];
wwc=[0.5660,0.6577,0.7069,0.7024,1.0342,0.5852,0.9330,0.5253,0.5067,0.5485,0.4558,0.6193,...
     0.6955,0.6717,0.7981,0.5874,0.5663,1.8420,0.4812,0.4837,0.4414,0.5604,0.6366,0.6898,...
     0.8030,0.5795,0.5446,1.2402,0.4912,0.4672];
p=[s;m;h];
t=wwc;
[np,minp,maxp,nt,mint,maxt]=premnmx(p,t);    % 归一化
net=newff(minmax(np),[20,15,1],{'tansig','tansig','purelin'},'traingdx');
% net.inputWeights{1,1}.initFcn = 'rands';
% net.biases{1,1}.initFcn = 'rands';
net=init(net);
net.trainParam.mc=0.9;
net.trainParam.lr = 0.05;
net.trainParam.lr_inc = 1.05;
net.trainParam.show=100;
net.trainParam.epochs=10000;
net.trainParam.goal=0.00001;
net=train(net,np,nt);
ny=sim(net,np);
y=postmnmx(ny,mint,maxt);
error=y-t;
save fdb_net.mat net
figure
plot(error)
hold on
plot(error,'r*')

% 测试
s_test=[0.5021,0.7676,1.1818,0.4589,0.5750];  % 输入
m_test=[1.0637,1.7721,1.4506,1.8886,1.4694];
h_test=[1.1191,0.7098,1.0406,0.8897,1.1159];
wwc_test=[0.8475,0.7044,0.6784,0.6107,0.7510]; % 目标
p_simution=[s_test;m_test;h_test];
p_ntest=tramnmx(p_simution,minp,maxp);
y_ntest=sim(net,p_ntest);                   %网络输出
y_test=postmnmx(y_ntest,mint,maxt);
error_test=y_test-wwc_test
rate=error_test./wwc_test                   %误差率  
figure
plot(error_test)
hold on
plot(error_test,'ro')
grid
 楼主| 发表于 2010-5-1 11:58:32 | 显示全部楼层 来自 上海嘉定区
Simdroid开发平台
测试误差最好在5%以内
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 01:26 , Processed in 0.054092 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表