设为首页收藏本站
开启辅助访问
切换到窄版

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2313|回复: 1

BP人工神经网络程序及注释

[复制链接]
发表于 2011-10-6 00:18:01 | 显示全部楼层 |阅读模式

  1. clear
  2. %数据输入
  3. huanghe_p=[370        503        434        575        490        420        560        640        558        343        326        405        446        423        422        697        598        377        435        472        451        667        601        689        541        485        425        389        382        707        422];
  4. huanghe_t=[515        713        586        753        720        567        717        987        810        489        453        589        639        568        595        982        849        519        615        652        599        941        893        999        758        701        630        561        520        1040 535];
  5. %归一化处理
  6. p=(huanghe_p-min(huanghe_p))/(max(huanghe_p)-min(huanghe_p));
  7. t=(huanghe_t-min(huanghe_t))/(max(huanghe_t)-min(huanghe_t));
  8. %数据输入2:网络有关参数
  9. EPOCHS=10000;
  10. GOAL=0.000005;
  11. %建立bp神经网络,并训练,仿真。其中输入为p,输出为t
  12. %-------------------------隐层神经元确定-----------------------------
  13. s=3:15;%s 为常向量,表示神经元的个数
  14. res=zeros(size(s));%res将要存储误差向量,这里先置零
  15. pn=[p(1:5);p(6:10);p(11:15);p(16:20)];
  16. tn=[t(1:5);t(6:10);t(11:15);t(16:20)];
  17. for i=1:length(s)           
  18.     net=newff(minmax(pn),[s(i),4],{'tansig','purelin'},'trainlm');
  19.     net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;
  20.     net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;
  21.     net.b{1,1}=zeros(size(net.b{1,1}))+0.5;
  22.     net.b{2,1}=zeros(size(net.b{2,1}));
  23.     net.trainParam.epochs=EPOCHS;
  24.     net.trainParam.goal =GOAL;
  25.     net=train(net,pn,tn);
  26.     y=sim(net,pn);
  27. e=tn-y;
  28. error=mse(e,net);
  29. res(i)=norm(error);
  30.    
  31. end
  32. %选取最优神经元数,number为使得误差最小的隐层神经元个数
  33. number=find(res==min(res));
  34. if(length(number)>1) no=number(1)
  35. else no=number
  36. end
  37. clear error,res
  38. %选定隐层神经元数目后,建立网络,训练仿真。
  39. net=newff(minmax(pn),[no,4],{'tansig','purelin'},'trainlm');
  40.     net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;
  41.     net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;
  42.     net.b{1,1}=zeros(size(net.b{1,1}))+0.5;
  43.     net.b{2,1}=zeros(size(net.b{2,1}));
  44.     net.trainParam.epochs=EPOCHS;
  45.     net.trainParam.goal =GOAL;
  46. net=train(net,pn,tn);
  47. y=sim(net,pn);
  48. e=tn-y;
  49. error=mse(e,net)%error为网络的误差向量
  50. r=norm(error);%r为网络的整体误差
  51. save net                      %保存最好的网络
  52. %预测
  53. input=[p(11:15);p(16:20);p(21:25);p(26:30)];
  54. yuce=sim(net,input);
  55. %结果反归一化
  56. y1=[y(1,:) y(2,:) y(3,:) y(4,:)];
  57. yuce1=[yuce(1,:) yuce(2,:) yuce(3,:) yuce(4,:)];
  58. t1=y1*(max(huanghe_t(1:20))-min(huanghe_t(1:20)))+min(huanghe_t(1:20));
  59. yuce2=yuce1*(max(huanghe_t(1:20))-min(huanghe_t(1:20)))+min(huanghe_t(1:20));
  60. %计算误差
  61. wucha=abs(t1-huanghe_t(1:20))./huanghe_t(1:20)
  62. b=minmax(wucha);
  63. average_wucha=mean(wucha);
  64. %作图
  65. figure(1)
  66. plot(1:20,huanghe_t(1:20),'*-',1:20,t1,'o:')
  67. figure(2)
  68. plot(1:20,huanghe_t(11:30),'*-',1:20,yuce2,'o:')
复制代码
发表于 2012-3-6 04:01:03 | 显示全部楼层
为什么不能有自己的代表黄婵妮说到今年参见两会,标哥说:“前几天,我夫人怎么都不让我来,说我脸皮太厚,现在名气这么大,第11年还跑过来旁听,不怕人家笑话你。我觉得旁听挺好,这几年来我提出了很多的建议,国家都有采纳。”今年,标哥有了新的主意。他建议,在两会遴选代表时,在每个省从环保界、慈善界选一两个代表委员。既然企业界和文艺界都有代表,难么环保慈善界为什么不能有自己的代表?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|生物信息学论坛 ( 蜀ICP备09031721号  

GMT+8, 2017-2-20 21:33 , Processed in 0.097257 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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