keras中的Early Stop回调

问题描述 投票:1回答:1

如何通过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似乎没有作用。打印成功,但是模型继续训练。任何想法如何解决这个问题?我的tensorflow版本是:tensorflow == 1.14.0

keras callback early-stopping
1个回答
0
投票

您可能受到以下问题的影响: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中修复。

© www.soinside.com 2019 - 2024. All rights reserved.