Keras中的EarlyStopping和ReduceLROnPlateau都有patience参数。然而,EarlyStopping的patience参数为0,而ReduceLROnPlateau的patience参数为10。假设它们都默认监控瓦尔_loss,如果ReduceLROnPlateau因为patience数太高而永远没有机会更新自己,它将如何工作?
那么,从逻辑上讲,对EarlyStopping的耐心应该总是大于ReduceLROnPlateau,对吗?
Keras中的EarlyStopping和ReduceLROnPlateau都有patience参数。然而,EarlyStopping的patience参数为0,而ReduceLROnPlateau的patience参数为10。假设它们都默认监控瓦尔_loss,如果ReduceLROnPlateau因为patience数太高而永远没有机会更新自己,它将如何工作?
那么,从逻辑上讲,对EarlyStopping的耐心应该总是大于ReduceLROnPlateau,对吗?
1条答案
按热度按时间k10s72fa1#
下面是一个简化的实现:
字符串
注意
min_delta
。它控制我们是否 * 检测到 * 新的最佳值。小的改进不会被检测到--它们会被忽略。如果我们击败了以前 * 检测到的 * 最佳值(这 * 不 * 一定是实际的最佳值!),那么我们重置wait
计数器。与
EarlyStopping
相同。但是,请注意不同的选择:
| | | |
| --|--|--|
|
ReduceLROnPlateau
个|耐心=10| min_delta=0.0001||
EarlyStopping
个|耐心=0| min_delta=0|所以.
EarlyStopping
对它认为的变化要宽松得多。如果损失下降 * 非常 * 平滑但单调,当它低于min_delta
持续10个epoch时,我们仍然可以看到LR下降。在实践中,损失并不是那么平滑,如果它停止单调下降,EarlyStopping
将终止训练。这就是为什么你可能应该增加它的耐心,例如
patience=11
。另请参阅:PyTorch的ReduceLROnPlateau
默认值。PyTorch也做相对增量,而不是绝对增量。注意:PyTorch使用完全不同的参数值和算法,因此此解释仅适用于Keras。