BP神经网络

【答疑】如何关掉BP神经网络的Validation Checks

作者 : 老饼 发表日期 : 2023-01-18 19:30:46 更新日期 : 2024-12-05 22:54:06
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



matlab神经网络工具箱训练BP神经网络时,往往会因为Validation Checks而停止训练

本文讲解如何Validation Checks是什么,以及如何关掉BP神经网络Validation Checks的三种方法

通过本文,可以了解BP神经网络的Validation Checks是什么、有什么用,以及如何禁止使用它的设置方法





    01. 如何关掉BP的Validation Checks    





本节介绍BP神经网络的ValidationChecks是什么,以及关掉它的三种方法





   Validation Checks是什么   


在使用BP神经网络工具箱进行训练时,会出现遇到达到最大Validation Checks而退出训练的情况
 所以经常有小伙伴问,这Validation Checks是个什么鬼?
 
Validation Checks是什么
matlab工具箱内部会将数据分成三部分(注意观看,上面还有个Data Division):
 👉 training       
👉 validation  
👉 testing      

其中,training用于训练,validation用于验证泛化能力
即matlab是边训练边验证,当验证数据连续n次没能提升时,则退出训练
 因为这样说明,训练数据越训越好,但泛化能力却越来越差,即走在过拟合的路上了,所以退出训练






    关掉Validation Checks的三种方法     


一般来说,不应该、也不建议关掉Validation Checks
但如果一定要关掉Validation Checks,下面提供三种方法
 方法一:将数据划分函数置空 
将net.dividefcn参数设为空,就不进行数据划分,如下:
net.dividefcn =''
 不进行数据划分,就不会做validation检查,因此不会因为Validation失败而退出训练
 

 方法二:不划分验证数据 
将net.divideParam.valRatio参数设为0,也就屏蔽了validation检查,如下:
net.divideParam.trainRatio =1  
net.divideParam.valRatio    = 0 
net.divideParam.testRatio   = 0 
 这里将验证数据比例置0,为了不浪费数据,同时也修改训练数据与检验数据比例
 

  方法三:将失败阈值调到极大
将max_fail参数设为极大,那么Validation失败也不会退出训练,如下:          
net.trainparam.max_fail=10000
 这个不算关掉,只是让训练不因Validation Checks不通过而退出训练
三种方法的具体代码示例如下:
% 本代码用于展示BP神经网络如何关掉validation check
% 代码来自《老饼讲解-BP神经网络》www.bbbdata.com
X  = [-1:0.2:1;-1:0.2:1];                                % 输入数据x
y = sin(X( 1,:)) + X( 2,:);                              % 输出数据y
net = newff(X,y,3);                                      % 网络训练
% ----关掉validation check方法一:将数据划分置空------    
net.dividefcn ='';                                       % 将数据划分置空
									
% ----关掉validation check方法二:将验证数据置空------   
% net.divideParam.trainRatio = 1;                        % 训练数据设为1
% net.divideParam.valRatio   = 0;                        % 验证数据设为0
% net.divideParam.testRatio  = 0;                        % 测试数据设为0
														 
% ----关掉validation check方法三:将失败阈值设为很大--    %
% net.trainparam.max_fail = 10000;                       % 将失败阈值设为很大
[net,tr,py_tool] = train(net,X,y);                       % 训练网络






好了,以上就是三种关掉BP神经网络的Validation Checks的方法了~








 End 




联系老饼