马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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);
程序如下:
- % 利用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);
- %对训练数据进行归一化处理
- [Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T);
- clc
- %创建BP神经网络
- net=newff(minmax(Pn),[15 1],{'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神经网络进行训练
- [net,tr]=train(net,Pn,Tn);
- % 对BP神经网络进行仿真分析
- Yn=sim(net,Pn);
- % 恢复被归一化的数据
- [Y]=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);
- % 将仿真结果还原成原始数据
- [y]=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 编辑 ] |