老饼讲解-神经网络 机器学习 神经网络 深度学习
BP神经网络建模
1.BP神经网络-工具箱说明
2.BP神经网络-建模代码
3.BP神经网络-训练技巧
4.BP神经网络-应用案例
5.BP神经网络-问题答疑

【代码】BP神经网络建模代码(简捷代码)

作者 : 老饼 发表日期 : 2022-10-28 23:31:23 更新日期 : 2022-11-01 03:05:19
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



本文展示一个完整的BP神经网络建模例子,用于理解和学习整体建模流程

本文是《BP神经网络建模流程(简捷步骤)》的实现代码



这里展现一个按照matlab工具箱推荐的建模流程来实现BP神经网络的DEMO,

通过本DEMO,可以具体地学习到按工具箱流程来落地BP神经网络的细节。




   01. 代码思路   


按照神经网络工具箱的建模流程,只需要以下简单的三步即可:
 
本文按此流程实现一个BP神经网络的DEMO,
具体思路细节如下

1、生成数据                                                                                                      
2、设置一个三层的BP网络,并将隐节点设为3                                                    
3、训练网络                                                                                                      
4、抽出训练结果中的训练数据与测试数据的预测结果,并与原始数据进行对比    
5、使用训练好的BP神经网络进行预测                                                                



     02. 具体代码   


代码已在matlab2014b版本亲测跑过:
clear all;
close all ;
%================原始数据====================
x1 = linspace(-3,3,100);     % 在[-3,3]之间线性生成100个数据
x2 = linspace(-2,1.5,100);   % 在[-2,1.5]之间线性生成100个数据
X  = [x1;x2];                          % 将x1,x2作为输入数据
y = 10*sin(x1)+0.2*x2.*x2;   % 生成y
setdemorandstream(88);       % 老饼为了每次运行的结果一致设定随机种子,实际中可以去掉
%==============网络训练 ============================
%使用用输入输出数据(X,y)建立网络,
%隐节点个数设为3.其中输入层到隐层、隐层到输出层的节点分别为tansig和purelin,使用trainlm方法训练。
net = newff(X,y,3,{'tansig','purelin'},'trainlm');
%设置一些常用关键参数
net.trainparam.goal = 0.00001;    % 训练目标:均方误差低于0.0001
net.trainparam.show = 400;        % 每训练400次展示一次结果
net.trainparam.epochs = 15000;    % 最大训练次数:15000.
net.divideParam.trainRatio=0.7;   % 用于训练的数据比例
net.divideParam.valRatio=0.15 ;   % 用于验证过拟合的数据比例
net.divideParam.testRatio=0.15;   % 用于比例
net.trainparam.max_fail =6;       % 过拟合验证失败次数

[net,tr,net_y] = train(net,X,y);  % 调用matlab神经网络工具箱自带的train函数训练网络y,net返回

% ===========画图==================================
figure
subplot(2,1,1);
title('训练数据的拟合效果')
hold on 
plot(1:length(tr.trainInd),y(tr.trainInd),'b')
plot(1:length(tr.trainInd),net_y(tr.trainInd),'r')

subplot(2,1,2);
title('测试数据的拟合效果')
hold on 
plot(1:length(tr.testInd),y(tr.testInd),'b')
plot(1:length(tr.testInd),net_y(tr.testInd),'r')

%=============网络对新输入的使用==========================
sim_y = sim(net,X);               % 实际与上面的net_y一致
以上就是一个完整的matlab实现BP神经网络Demo代码了,
也可以加入更多个性化设置,
具体可参考《matlab-BP神经网络工具箱-训练参数详解》




     03. 运行结果   


运行结果如下
 
从结果可以看到,训练数据效果和测试数据效果都不错






  End  






联系老饼