keras中的提前停止回调

keras中的提前停止回调,keras,callback,early-stopping,Keras,Callback,Early Stopping,如何通过keras中的回调有效地停止训练模型的拟合过程?到目前为止,我已经尝试了各种方法,包括下面的方法 class EarlyStoppingCallback(tf.keras.callbacks.Callback): def __init__(self, threshold): super(EarlyStoppingCallback, self).__init__() self.threshold = threshold def on_epo

如何通过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\u training=True
似乎没有效果。打印成功,但模型继续训练。你知道如何解决这个问题吗?
我的tensorflow版本是:tensorflow==1.14.0

您可能受到以下问题的影响:

简言之,每当调用
model.predict
model.evaluate
时,
model.stop\u training
重置为
False
。我能够使用您的
EarlyStoppingCallback
,然后是另一个在某个固定数据集上调用
model.predict
的回调来重现这种行为

解决方法是将调用<代码>模型的回调放在前面。预测<代码>或<代码>模型。在任何可能要设置<代码>模型的回调之前,首先评估<代码>。停止培训<代码>为<代码>真<代码>。TF2.2似乎也解决了这个问题。

你能分享一下你的代码吗谢谢:),这很有见地。这个问题可以立即解决。