【问题标题】:Early Stop callback in keraskeras 中的早期停止回调
【发布时间】:2020-09-16 16:09:41
【问题描述】:

如何通过 keras 中的回调有效地停止训练模型的拟合过程?到目前为止,我已经尝试了各种方法,包括下面的一种。

class EarlyStoppingCallback(tf.keras.callbacks.Callback):
    def __init__(self, threshold):
        super(EarlyStoppingCallback, self).__init__()
        self.threshold = threshold

    def on_epoch_end(self, epoch, logs=None):
        accuracy = logs["accuracy"]
        if accuracy >= self.threshold:
            print("Stopping early!")
            self.model.stop_training = True

回调已执行,但 self.model.stop_training = True 似乎没有效果。打印成功,但模型继续训练。知道如何解决这个问题吗? 我的张量流版本是:张量流==1.14.0

【问题讨论】:

标签: keras callback early-stopping


【解决方案1】:

您可能受到以下问题的影响:https://github.com/tensorflow/tensorflow/issues/37587

简而言之 - 每当调用 model.predictmodel.evaluate 时,model.stop_training 都会重置为 False。我能够使用您的 EarlyStoppingCallback 重现此行为,然后是另一个回调,该回调在某些固定数据集上调用 model.predict

解决方法是将调用model.predictmodel.evaluate 的回调放在任何可能想要将model.stop_training 设置为True 的回调之前。看起来这个问题在 TF 2.2 中也得到了修复。

【讨论】:

  • 谢谢 :),这很有见地。问题可以立即解决。
猜你喜欢
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多