本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
matlab工具箱在BP神经网络运行后会提供各种结果,用于展示训练过程与效果
本文解说matlab运行BP神经网络后的各个结果的说明与意义,以及在实践中的用途
通过本文,可以了解如何看matlab的BP神经网络的结果,以及应该关注哪些指标内容
本节解说matlab的BP神经网络工具箱运行后的各个结果
BP神经网络运行结果说明
在使用matlab工具箱训练完BP神经网络后,怎么看结果?
下面我们训练一个BP神经网络,并对各个结果进行简单讲解
setdemorandstream(88); % 设定随机种子,让每次运行结果一样
X = [1,2,3,5,8]; % 输入数据X
y= [4,10,20,52,130]; % 输出数据y
net = newff(X,y,3,{'tansig','purelin'},'trainlm') ; % 构建一个BP神经网络
net.trainparam.goal = 0.00001; % 训练目标:均方误差低于0.0001
[net,tr,net_y] = train(net,X,y); % 训练网络
运行以上代码后,matlab展示训练界面如下
在上述界面点击performance、training State和Regression可绘制如下曲线
👉performance:绘制误差曲线,展示训练过程各个误差的变化
👉training State:绘制训练状态曲线,展示训练过程一些训练参数的变化
👉Regression:绘制回归曲线,展示网络的预测值与真实值的回归曲线
具体如下:
误差曲线
训练状态曲线
回归曲线
本节分享笔者对BP神经网络结果的关注点
BP神经网络-老饼关注什么结果
虽然上述结果是matlab提供的训练结果,但老饼个人对以上结果都不怎么关注
个人比较关注BP神经网络的绝对误差和绝对误差比,这需要自行统计
具体代码示例如下:
setdemorandstream(88); % 设定随机种子,让每次运行结果一样
X = [1,2,3,5,8]; % 输入数据X
y= [4,10,20,52,130]; % 输出数据y
net = newff(X,y,3,{'tansig','purelin'},'trainlm') ; % 构建一个BP神经网络
net.trainparam.goal = 0.00001; % 训练目标:均方误差低于0.0001
[net,tr,net_y] = train(net,X,y); % 训练网络
% 提取训练数据与测试数据
train_net_y = net_y(tr.trainInd); % 训练数据的预测值
test_net_y = net_y(tr.testInd); % 测试数据的预测值
train_y = y(tr.trainInd); % 训练数据的真实值
test_y = y(tr.testInd); % 测试数据的真实值
% 计算误差
train_err = mean(abs(train_net_y(:)-train_y(:))) % 训练数据的误差
test_err = mean(abs(test_net_y(:)-test_y(:))) % 测试数据的误差
train_err_rate = mean(abs((train_net_y(:)-train_y(:))./train_y(:))) % 训练数据的误差比
test_err_rate = mean(abs((test_net_y(:)-test_y(:))./test_y(:))) % 测试数据的误差比
在matlab2018a中运行结果如下
光从这4个结果,就可以知道模型训练是否成功,
以上述结果为例,训练数据的误差非常小,但在测试数据中非常差,
这说明模型过拟合了,需要尝试减少神经元节点等相关调整
End