BP神经网络

【说明】matlab的BP神经网络结果怎么看

作者 : 老饼 发表日期 : 2023-05-08 11:44:39 更新日期 : 2024-12-05 12:45:48
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



matlab工具箱在BP神经网络运行后会提供各种结果,用于展示训练过程与效果

本文解说matlab运行BP神经网络后的各个结果的说明与意义,以及在实践中的用途

通过本文,可以了解如何看matlab的BP神经网络的结果,以及应该关注哪些指标内容





    01. 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展示训练界面如下
 matlab的训练界面 
在上述界面点击performance、training State和Regression可绘制如下曲线
👉performance:绘制误差曲线,展示训练过程各个误差的变化                                
👉training State:绘制训练状态曲线,展示训练过程一些训练参数的变化                 
👉Regression:绘制回归曲线,展示网络的预测值与真实值的回归曲线                     
  具体如下: 
误差曲线
 BP神经网络的误差曲线  
训练状态曲线
BP神经网络的训练状态曲线 
回归曲线
BP神经网络的回归曲线








    02. matlab的BP神经网络结果怎么看   




本节分享笔者对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 





联系老饼