本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com
本文讲解使用matlab神经网络工具箱进行BP神经网络建模流程与具体步骤
下面讲述利用matlab神经网络工具箱进行BP神经网络建模的步骤
建模步骤
matlab神经网络工具箱对BP神经网络做了高度封装,
因此,我们实际使用matlab神经网络工具箱进行BP神经网络建模,
一般只需要三个操作步骤:
● 设置网络 ● 训练网络 ● 查看结果
可以看到,使用matlab神经网络工具箱训练一个BP网络非常简单,
因为它已经帮我们把归一化、数据分割、训练这些工作都做了
我们只需要直接调用工具箱的方法就可以
本节先展现一个实例的代码,再讲解代码的含义
实例代码
我们先看一个matlab神经网络工具箱训练BP神经网络的简单例子(matlab2018a)
X = [1,2,3,5,8]; % 输入数据X
y= [4,10,20,52,130]; % 输出数据y
net = newff(X,y,3,{'tansig','purelin'},'trainlm') ; % 构建一个BP神经网络
[net,tr,net_y] = train(net,X,y); % 训练网络
train_err = mean(abs(net_y(tr.trainInd)-y(tr.trainInd))); % 训练数据的误差
test_err = mean(abs(net_y(tr.testInd)-y(tr.testInd))); % 测试数据的误差
sim_y = sim(net,X); % 使用训练好的网络对X进行预测
通过上面的代码,就可以训练一个BP神经网络,
最后,通过sim函数,就可以使用训练好的网络进行预测
代码讲解
下面我们讲解上述BP神经网络建模代码关键部分的含义
newff-初始化网络
newff用于初始化一个BP神经网络,它的参数意义如下:
● 3代表只有一个节点数为3的隐层
如果换成[4,5]则代表有两个隐层,第一个隐层有4个节点,第二个隐层有5个节点
● {'tansig','purelin'}则代表隐层、输出层的激活函数分别为tansig和purelin,
如果有两个隐层,就需要给两个隐层设置激活函数,例如{'tansig','tansig','purelin'}
● trainlm则是我们的训练函数,代表用lm算法训练网络
也可设为'traingd',代表用梯度下降算法训练网络
train-训练网络
train代表训练网络,
● train的工作流程如下:
调用train后,train就会把X,y进行归一化,
并分割成训练、检验、测试三份数据
然后用训练数据训练模型,
并用检验数据监督模型是否走向过拟合,
测试数据不参与任何过程。
● train的输出参数意义如下:
train输出三个参数,这里我们用net,tr,net_y来接收这三个输出,
net是训练好的网络,
tr则存放了一些训练过程的记录,
net_y则是网络对X的预测
● 如何获取三份数据的索引
怎么知道train把哪些数据划为训练,哪些划为测试?
它记录在tr中
tr.trainInd是训练数据的索引
tr.testInd则是测试数据的索引
用X(:,tr.trainInd)就能获取用于训练的X,其它数据获取类似
sim-网络预测
最后,我们只需要使用sim函数就可以用训练好的网络对新数据进行预测了
sim_y = sim(net,X)代表用训练好的net对X进行预测,sim_y就是预测结果
✍️关于输入输出的特别说明
BP神经网络工具箱的输入和输出都是矩阵,
每一列代表一个样本,每行代表一个变量,切记,如下