gpt4 book ai didi

python - EarlyStopping 回调在 Keras 中表现神秘

转载 作者:行者123 更新时间:2023-11-28 18:18:49 24 4
gpt4 key购买 nike

我的模型在第 4 个时期后停止训练,尽管我希望它在之后继续训练。我已将监视器设置为验证损失和耐心为 2,我认为这意味着在验证损失连续增加 2 个时期后训练停止。然而,训练似乎在此之前就停止了。

我定义了 EarlyStopping 如下:

callbacks = [
EarlyStopping(monitor='val_loss', patience=2, verbose=0),
]

在 fit 函数中我这样使用它:

hist = model.fit_generator(
generator(imgIds, batch_size=batch_size, is_train=True),
validation_data=generator(imgIds, batch_size=batch_size, is_val=True),
validation_steps=steps_per_val,
steps_per_epoch=steps_per_epoch,
epochs=epoch_count,
verbose=verbose_level,
callbacks=callbacks)

我不明白为什么训练在第 4 个 epoch 之后结束。

675/675 [==============================] - 1149s - loss: 0.1513 - val_loss: 0.0860
Epoch 2/30
675/675 [==============================] - 1138s - loss: 0.0991 - val_loss: 0.1096
Epoch 3/30
675/675 [==============================] - 1143s - loss: 0.1096 - val_loss: 0.1040
Epoch 4/30
675/675 [==============================] - 1139s - loss: 0.1072 - val_loss: 0.1019
Finished training intermediate1.

最佳答案

我认为您对 EarlyStopping 回调的解释有点不对;当损失没有从 它所见过的最好的损失 patience 时期改善时,它就会停止。您的模型在第 1 轮时的最佳损失是 0.0860,对于第 2 轮和第 3 轮,损失没有改善,因此它应该在第 3 轮后停止训练。但是,由于 off-by,它会继续再训练一个轮- 一个错误,至少我会这样调用它,因为文档对 patience 的描述是:

patience: number of epochs with no improvement after which training will be stopped.

来自 Keras 源代码(为清楚起见略作编辑):

class EarlyStopping(Callback):
def on_epoch_end(self, epoch, logs=None):
current = logs.get(self.monitor)

if np.less(current - self.min_delta, self.best):
self.best = current
self.wait = 0
else:
if self.wait >= self.patience:
self.stopped_epoch = epoch
self.model.stop_training = True
self.wait += 1

请注意 self.wait 是如何在针对 self.patience 检查之后才递增的,因此虽然您的模型应该已经停止训练在第 3 个 epoch 之后,它又持续了一个 epoch。

不幸的是,如果你想要一个按照你描述的方式运行的回调,它会在 patience 时期没有连续改进的情况下停止训练,你必须自己编写它。但我认为您可以稍微修改 EarlyStopping 回调来完成此操作。

编辑:差一错误是 fixed .

关于python - EarlyStopping 回调在 Keras 中表现神秘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com