声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4093|回复: 6

[人工智能] 神经网络数据归一化疑问

[复制链接]
发表于 2008-9-12 11:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
使用函数premnmx和tramnmx;
训练样本大小为18*21,使用premnmx([pn,minp,maxp] = premnmx(train_tryin12);)后得到minp,maxp大小均为 18*1;
测试样本大小为3*21,使用tramnmx([tryexe]=tramnmx(train_tryexe12,minp,maxp);)时出错,察看帮助

tramnmx(P,minp, maxp)takes these inputs
P -- R x Q matrix of input (column) vectors.
minp -- R x 1 vector containing original minimums for each input.
maxp -- R x 1 vector containing original maximums for each input
----------------------------------------------------------------------------------------------
p与minp,maxp行数R均相同,但是我的样本与测试向量行数并不相同,所以得到的minp,maxp不可能与样本有相同的行数,难道用tramnmx函数归一化时要求测试样本与训练样本有同样的行数?
回复
分享到:

使用道具 举报

发表于 2008-9-13 11:12 | 显示全部楼层
是这样的,给你个例子吧

  1. close all
  2. clear
  3. echo on
  4. clc
  5. %BP建模
  6. %原始数据归一化
  7. m_data=[1047.92 1047.83 0.39 0.39 1.0 3500 5075;
  8. 1047.83 1047.68 0.39 0.40 1.0 3452 4912;
  9. 1047.68 1047.52 0.40 0.41 1.0 3404 4749;
  10. 1047.52 1047.27 0.41 0.42 1.0 3356 4586;
  11. 1047.27 1047.41 0.42 0.43 1.0 3308 4423;
  12. 1046.73 1046.74 1.70 1.80 0.75 2733 2465;
  13. 1046.74 1046.82 1.80 1.78 0.75 2419 2185;
  14. 1046.82 1046.73 1.78 1.75 0.75 2105 1905;
  15. 1046.73 1046.48 1.75 1.85 0.70 1791 1625;
  16. 1046.48 1046.03 1.85 1.82 0.70 1477 1345;
  17. 1046.03 1045.33 1.82 1.68 0.70 1163 1065;
  18. 1045.33 1044.95 1.68 1.71 0.70 849 785;
  19. 1044.95 1045.21 1.71 1.72 0.70 533 508;
  20. 1045.21 1045.64 1.72 1.70 0.70 567 526;
  21. 1045.64 1045.44 1.70 1.69 0.70 601 544;
  22. 1045.44 1045.78 1.69 1.69 0.70 635 562;
  23. 1045.78 1046.20 1.69 1.52 0.75 667 580];
  24. %定义网络输入p和期望输出t
  25. pause
  26. clc
  27. p1=m_data(:,1:5);
  28. t1=m_data(:,6:7);
  29. p=p1';t=t1';
  30. [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
  31. %设置网络隐单元的神经元数(5~30验证后5个最好)
  32. n=5;
  33. %建立相应的BP网络
  34. pause
  35. clc
  36. net=newff(minmax(pn),[n,2],{'tansig','purelin'},'traingdm');
  37. inputWeights=net.IW{1,1};
  38. inputbias=net.b{1};
  39. layerWeights=net.IW{1,1};
  40. layerbias=net.b{2};
  41. pause
  42. clc
  43. % 训练网络
  44. net.trainParam.show=50;
  45. net.trainParam.lr=0.05;
  46. net.trainParam.mc=0.9;
  47. net.trainParam.epochs=200000;
  48. net.trainParam.goal=1e-3;
  49. pause
  50. clc
  51. %调用TRAINGDM算法训练BP网络
  52. net=train(net,pn,tn);
  53. %对BP网络进行仿真
  54. A=sim(net,pn);
  55. E=A-tn;
  56. M=sse(E)
  57. N=mse(E)
  58. pause
  59. clc
  60. p2=[1046.20 1046.05 1.52 1.538 0.75;
  61. 1046.05 1046.85 1.538 1.510 0.75;
  62. 1046.85 1046.60 1.510 1.408 0.75;
  63. 1046.60 1046.77 1.408 1.403 0.75;
  64. 1046.77 1047.18 1.403 1.319 0.75];
  65. p2=p2';
  66. p2n=tramnmx(p2,minp,maxp);
  67. a2n=sim(net,p2n);
  68. a2=postmnmx(a2n,mint,maxt)
  69. echo off
  70. pause
  71. clc
复制代码
 楼主| 发表于 2008-9-14 09:39 | 显示全部楼层

回复 沙发 frogfish 的帖子

你给出的例子中训练样本p还是和测试样本矩阵p2的行数一样啊
我训练样本18*21,测试样本就得有18行?
发表于 2008-9-14 10:11 | 显示全部楼层


上贴已经回答你了,是这样的,如果行数不同那就不是同类样本了
 楼主| 发表于 2008-9-14 15:42 | 显示全部楼层

回复 地板 frogfish 的帖子

谢谢明白了
你的训练样本和测试样本均是转置后输入函数的,而我则输入前没有转导致行数不一致
发表于 2008-9-15 09:18 | 显示全部楼层
这个转置经常有人忘掉
发表于 2009-1-4 19:08 | 显示全部楼层
layerWeights=net.IW{1,1};
是不是应为layerWeights=net.LW{2,1};???????
我不懂请教
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 20:00 , Processed in 0.080765 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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