keras - keras 中的早期停止回调
问题描述
如何通过 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
解决方案
您可能会受到以下问题的影响:https ://github.com/tensorflow/tensorflow/issues/37587 。
简而言之 - 每当model.predict
或被model.evaluate
调用时,model.stop_training
都会重置为False
. 我能够使用您的EarlyStoppingCallback
后跟另一个调用model.predict
某个固定数据集的回调来重现此行为。
解决方法是将正在调用的回调model.predict
或model.evaluate
首先放在任何可能想要设置model.stop_training
为的回调之前True
。看起来该问题已在 TF 2.2 中修复。
推荐阅读
- parsing - 如何将 json-ld 解析为降价
- sql - 未为角色“my_role_1”授予 ADMIN 选项
- windows - 运行对话框中的命令如何执行?
- c# - 如何在 Visual Studio For Mac 中清除 macOS 终端板?
- javascript - 将自定义图像上传到 Spotify 播放列表
- ios - react-native-maps initialRegion、region 和 animateToRegion 不适用于 iOS 但适用于 Android
- mysql - 需要创建一个长度为 60000 的 varchar 列
- sql - (SQL) 如何使用 xp_dirtree 获取文件名和大小?
- javascript - CSS 变量 Polyfil - 用于 LitePicker JS 的 IE11
- c# - System.InvalidCastException 与 iennumrable 演员