本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
matlab神经网络工具箱训练BP神经网络时,往往会因为Validation Checks而停止训练
本文讲解如何Validation Checks是什么,以及如何关掉BP神经网络Validation Checks的三种方法
通过本文,可以了解BP神经网络的Validation Checks是什么、有什么用,以及如何禁止使用它的设置方法
本节介绍BP神经网络的ValidationChecks是什么,以及关掉它的三种方法
Validation Checks是什么
在使用BP神经网络工具箱进行训练时,会出现遇到达到最大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