我在进行二元分类时使用了Keras
的EarlyStopping
回调函数。然而,关于patience
参数我有一个问题。
在文档中提到
patience: 在训练停止之前,没有改进的轮数(epochs)。
但我发现它的行为与此不同。例如,我设置了
EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=2, verbose=0, mode='auto')
结果如下:
val_loss: 0.6811val_loss: 0.6941 val_loss: 0.6532val_loss: 0.6546val_loss: 0.6534val_loss: 0.6489val_loss: 0.6240val_loss: 0.6285val_loss: 0.6144val_loss: 0.5921val_loss: 0.5731val_loss: 0.5956val_loss: 0.5753val_loss: 0.5977
训练在此时停止了。据我观察,末尾并没有连续两次增加的损失值。能有人解释一下这个参数现象吗?
回答:
有三次连续的损失值变差,我们来看一下这些数字:
val_loss: 0.5921 < 当前最佳val_loss: 0.5731 < 当前最佳val_loss: 0.5956 < patience 1val_loss: 0.5753 < patience 2val_loss: 0.5977 < patience >2,停止训练
你已经发现了min delta参数,但我认为它在这里触发的阈值太小了(你差了10倍)。