本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com
BP神经网络是一个广泛应用的模型,
本文以一个实例作为主线,面向初学者讲解如何构建和使用一个BP神经网络
帮助没接触进BP神经网络的初学者,快速上手BP神经网络
目录
一、 如何构建一个BP神经网络
1.1 问题阐述
1.2 BP神经网络模型简介与实现
二、如何使用BP神经网络
2.1 如何使用训练好的BP神经网络进行预测
2.2 关于公式的提取
一、 如何构建一个BP神经网络
本节讲解如何构建一个BP神经网络
1.1 问题阐述
现有数据如下
为输入,为对应的输出,
现需要训练一个BP神经网络,用 预测
1.2 BP神经网络模型简介与实现
BP神经网络是指构建以下的模型来对数据进行预测
它的数学表达式如下
对于上述模型,隐层的节点个数(即tansig的个数)需要我们自行设置,
tansig是BP默认的常用函数,我们也可以换成其它函数,
在设置好隐节点个数后,我们使用软件对模型里的w、b进行求解就可以
一般都是使用matlab进行求解,效果会相对python较好些
matlab代码如下% 数据生成 x1 = [-3,-2.7,-2.4,-2.1,-1.8,-1.5,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,0.9,1.2,1.5,1.8]; % x1:x1 = -3:0.3:2; x2 = [-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,-2.2204,0.2,0.4,0.6,0.8,1,1.2]; % x2:x2 = -2:0.2:1.2; y = [0.6589,0.2206,-0.1635,-0.4712,-0.6858,-0.7975,-0.8040,... -0.7113,-0.5326,-0.2875 ,0,0.3035,0.5966,0.8553,1.0600,1.1975,1.2618]; % y: y = sin(x1)+0.2*x2.*x2; inputData = [x1;x2]; % 将x1,x2作为输入数据 outputData = y; % 将y作为输出数据 setdemorandstream(88888); % 指定随机种子,这样每次训练出来的网络都一样 %使用用输入输出数据(inputData、outputData)建立网络 %隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练 net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm'); %设置一些常用参数,然后训练网络 net.trainparam.goal = 0.0001; % 训练目标:均方误差低于0.0001 net.trainparam.show = 400; % 每训练400次展示一次结果 net.trainparam.epochs = 15000; % 最大训练次数:15000. [net,tr] = train(net,inputData,outputData); % 调用matlab神经网络工具箱自带的train函数训练网络 % 查看网络的预测结果 simout = sim(net,inputData); % 调用matlab神经网络工具箱自带的sim函数得到网络的预测值 figure; % 新建画图窗口窗口 t=1:length(simout); plot(t,y,t,simout,'r') % 画图,对比原来的y和网络预测的y
运行代码后得到训练数据的拟合效果图如下
可以看到,对于训练数据,网络的预测与原始数据基本一致
二、如何使用BP神经网络
本节讲解如何使用训练好的BP神经网络进行预测
2.1 如何使用训练好的BP神经网络进行预测
在训练好网络后,就可以使用网络对新样本进行预测
如果想知道 x1=0.5, x2=0.5时的值,
可输入如下代码x =[0.5;0.5]; simy = sim(net,x)
命令窗口输出如下
这样,就得到了输入为 [0.5,0.5] 时,y的预测值
上面所说的是使用软件包的预测函数sim来进行预测
而事实上,BP神经网络就是上述的数学表达式,
我们也可以提取出模型里的w、b,代入公式中进行预测
将x1=0.5,x2=0.5代入其中,即可得到
除了由计算精度极微小的差异,基本与工具箱中的预测结果一致
2.2 关于公式的提取
由于matlab的高度封装,要提取数学表达式并不是三言两语所能说清,
因此建议直接使用matlab自带的sim函数进行预测,
如果一定需要提取数学表达式,可以参考《BP建模应用》中《公式提取》一章的内容
相关文章
BP神经网络的原理与本质:老饼讲解|【原理】BP神经网络原理与本质
BP的数据处理:老饼讲解|【介绍】关于BP神经网络建模中的数据处理
BP的简单DEMO:老饼讲解|【示例】matlab-BP神经网络简单DEMO