风花雪月 发表于 2005-9-28 08:14

利用BP网络实现函数逼近

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

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

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

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

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

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

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

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

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

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

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

clc

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

%对训练数据进行归一化处理
=premnmx(P,T);
clc

%创建BP神经网络
net=newff(minmax(Pn),,{'tansig','purelin'},'trainbr');
clc

% 设置训练参数
net.performFcn='sse';
net.trainParam.goal=0.0001;
net.trainParam.show=1;
net.trainParam.epochs=15;
net.trainParam.Mu_max=1e-5;
net.trainParam.min_grad=1e-16;
% net.trainParam.mc=0.95;
net.trainParam.mem_reduc=1;

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

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

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

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

%计算均方误差
E=T-Y;
MSE=mse(E);
clc

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

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

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

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

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

figure;
plot(p1,t1,'r+');
hold on;
plot(p1,y,'b.');
axis([-1 1 -5 5]);
title('BP神经网络的函数逼近结果检验');
xlabel('输入');
ylabel('输出');
legend('测试样本数据','神经网络仿真',1);

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

[ 本帖最后由 风花雪月 于 2007-7-4 08:49 编辑 ]

flyingfish 发表于 2006-3-7 14:01

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

若若的问一句,版主,这个网络是3层bp网络模型吗?我是新手啊

charlielv 发表于 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 编辑 ]

恩熙0326 发表于 2006-5-22 17:15

请问大家对这个程序都运行了吗,我在一台电脑上运行了一下,出来的是一个simulink的结构图,换了一台电脑,出来的是一个三维画面,就是没有上面楼主给的两幅图,请问你们运行出来是这两幅图吗?

恩熙0326 发表于 2006-5-28 08:57

请下载完的留言阿!

我很想用这个例子,可是我运行后怎么出不来楼主画的那两个图形呢,大家都是没有改动直接运行的吗,结果是这两幅图吗,运行过的朋友请留个言阿,让我知道是我电脑的问题还是程序的问题!

cquzyc 发表于 2007-6-25 16:29

小弟是新手急需利用BP网络实现函数逼近matlab的程序麻烦大哥能不能发给我不胜感激
    小弟邮箱:cquzyc@163.com

cdq872 发表于 2007-6-27 22:16

请问“风花雪月”有fortran的RBF吗?

风花雪月 发表于 2007-7-4 08:49

原帖由 恩熙0326 于 2006-5-28 08:57 发表 http://www.chinavib.com/forum/images/common/back.gif
我很想用这个例子,可是我运行后怎么出不来楼主画的那两个图形呢,大家都是没有改动直接运行的吗,结果是这两幅图吗,运行过的朋友请留个言阿,让我知道是我电脑的问题还是程序的问题!

程序运行没有什么问题,我试过的

风花雪月 发表于 2007-7-4 08:53

原帖由 cdq872 于 2007-6-27 22:16 发表 http://www.chinavib.com/forum/images/common/back.gif
请问“风花雪月”有fortran的RBF吗?

http://orion.math.iastate.edu/burkardt/f_src/rbf/rbf.html
页: [1]
查看完整版本: 利用BP网络实现函数逼近