声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5031|回复: 9

[人工智能] 利用BP网络实现函数逼近

[复制链接]
发表于 2005-9-28 08:14 | 显示全部楼层 |阅读模式

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

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

x
用Matlab神经网络工具箱函数实现了BP神经网络实现了对函数的逼近。训练成功后,用未经训练的数据检验了网络的逼近能力,测试样本数据和仿真数据的吻合度很高,充分证明了该网络模型的准确有效性。将程序稍作改动,即可将本程序用于其他的更为复杂的函数的逼近。~..~

运行说明:将该程序保存在MATLAB的work目录下,在命令窗口键入文件名即可,
          或者将所有语句复制到命令窗口直接运行也可
      
%在训练神经网络前对训练数据进行了归一化处理
[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T);

% 对BP神经网络进行训练
[net,tr]=train(net,Pn,Tn);

% 对BP神经网络进行仿真分析
Yn=sim(net,Pn);  

% 恢复被归一化的数据
[Y]=postmnmx(Yn,mint,maxt);

%训练成功后对用未经训练的数据检验了网络的仿真效果

%对测试数据进行归一化处理:
p1n=tramnmx(p1,minp,maxp);
%tramnmx:利用预先计算的最大和最小值对数据进行变换

%对变换后的测试数据进行仿真
yn=sim(net,p1n);

% 将仿真结果还原成原始数据
[y]=postmnmx(yn,mint,maxt);


程序如下:
  1. % 利用BP网络实现函数逼近
  2. clear

  3. % NEWFF--生成一个新的前向神经网络
  4. %TRAIN---对BP网络进行训练
  5. % SIM----对BP网络进行仿真

  6. clc

  7. %定义训练样本矢量
  8. %P为输入矢量
  9. P=[-1:0.05:1];
  10. %T为目标矢量   
  11. T= sin(2*pi*P)+3*cos(2*pi*P);

  12. %对训练数据进行归一化处理
  13. [Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T);
  14. clc

  15. %创建BP神经网络
  16. net=newff(minmax(Pn),[15 1],{'tansig','purelin'},'trainbr');
  17. clc

  18. % 设置训练参数
  19. net.performFcn='sse';
  20. net.trainParam.goal=0.0001;
  21. net.trainParam.show=1;
  22. net.trainParam.epochs=15;
  23. net.trainParam.Mu_max=1e-5;
  24. net.trainParam.min_grad=1e-16;
  25. % net.trainParam.mc=0.95;
  26. net.trainParam.mem_reduc=1;

  27. % 重新初始化网络
  28. net=init(net);            

  29. % 对BP神经网络进行训练
  30. [net,tr]=train(net,Pn,Tn);

  31. % 对BP神经网络进行仿真分析
  32. Yn=sim(net,Pn);  

  33. % 恢复被归一化的数据
  34. [Y]=postmnmx(Yn,mint,maxt);

  35. %计算均方误差
  36. E=T-Y;
  37. MSE=mse(E);
  38. clc

  39. %画图描绘仿真结果
  40. figure;
  41. plot(P,T,'r+',P,Y,'b-');
  42. axis([-1 1 -5 5]);
  43. title('BP神经网络的函数逼近结果');
  44. xlabel('输入');
  45. ylabel('输出');
  46. legend('训练样本数据','神经网络仿真',1);
  47. grid on;

  48. %用未经训练的数据对训练成功的BP网络进行验证测试
  49. p1=[-0.9:0.3:0.9];
  50. t1=sin(2*pi*p1)+3*cos(2*pi*p1);

  51. %对测试数据进行归一化处理
  52. %tramnmx:利用预先计算的最大和最小值对数据进行变换
  53. p1n=tramnmx(p1,minp,maxp);

  54. %对变换后的测试数据进行仿真
  55. yn=sim(net,p1n);

  56. % 将仿真结果还原成原始数据
  57. [y]=postmnmx(yn,mint,maxt);

  58. figure;
  59. plot(p1,t1,'r+');
  60. hold on;
  61. plot(p1,y,'b.');
  62. axis([-1 1 -5 5]);
  63. title('BP神经网络的函数逼近结果检验');
  64. xlabel('输入');
  65. ylabel('输出');
  66. legend('测试样本数据','神经网络仿真',1);
复制代码


程序运行时部分界面如下:

[ 本帖最后由 风花雪月 于 2007-7-4 08:49 编辑 ]
fNaC6ey8.gif
RJRdX9B8.gif
回复
分享到:

使用道具 举报

发表于 2006-3-7 14:01 | 显示全部楼层

回复:(风花雪月)利用BP网络实现函数逼近

若若的问一句,版主,这个网络是3层bp网络模型吗?我是新手啊
发表于 2006-4-28 21:30 | 显示全部楼层
<P>请问有没关于RBF网络的MATLAB程序或其他语言的啊,</P>
 楼主| 发表于 2006-5-14 22:41 | 显示全部楼层

回复:(charlielv)请问有没关于RBF网络的MATLAB程序...

http://forum.vibunion.com/forum/thread-10962-1-1.html

[ 本帖最后由 风花雪月 于 2007-6-26 10:08 编辑 ]
发表于 2006-5-22 17:15 | 显示全部楼层
请问大家对这个程序都运行了吗,我在一台电脑上运行了一下,出来的是一个simulink的结构图,换了一台电脑,出来的是一个三维画面,就是没有上面楼主给的两幅图,请问你们运行出来是这两幅图吗?
发表于 2006-5-28 08:57 | 显示全部楼层

请下载完的留言阿!

我很想用这个例子,可是我运行后怎么出不来楼主画的那两个图形呢,大家都是没有改动直接运行的吗,结果是这两幅图吗,运行过的朋友请留个言阿,让我知道是我电脑的问题还是程序的问题!
发表于 2007-6-25 16:29 | 显示全部楼层
小弟是新手  急需利用BP网络实现函数逼近  matlab的程序  麻烦大哥能不能发给我  不胜感激
    小弟邮箱:cquzyc@163.com
发表于 2007-6-27 22:16 | 显示全部楼层
请问“风花雪月”有fortran的RBF吗?
 楼主| 发表于 2007-7-4 08:49 | 显示全部楼层
原帖由 恩熙0326 于 2006-5-28 08:57 发表
我很想用这个例子,可是我运行后怎么出不来楼主画的那两个图形呢,大家都是没有改动直接运行的吗,结果是这两幅图吗,运行过的朋友请留个言阿,让我知道是我电脑的问题还是程序的问题!


程序运行没有什么问题,我试过的
 楼主| 发表于 2007-7-4 08:53 | 显示全部楼层
原帖由 cdq872 于 2007-6-27 22:16 发表
请问“风花雪月”有fortran的RBF吗?


http://orion.math.iastate.edu/burkardt/f_src/rbf/rbf.html
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-21 00:47 , Processed in 0.081043 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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