【问题标题】:tensorflow checkpoint messageno match with training metric张量流检查点消息与训练指标不匹配
【发布时间】:2021-09-13 04:39:15
【问题描述】:

我用checkpoint = tf.keras.callbacks.ModelCheckpoint(filepath=ckpt_path, save_best_only=True, monitor='val_auc', verbose=1) 设置了检查点回调。当我查看我的训练日志时,它似乎不匹配。

:Epoch 00004: val_auc improved from 0.96440 to 0.96298, saving model to xxxxxxx
py log:2878/2878 - 352s - loss: 0.2071 - tp: 1207371.0000 - fp: 66819.0000 - tn: 1484009.0000 - fn: 187884.0000 - accuracy: 0.9135 - precision: 0.9476 - recall: 0.8653 - auc: 0.9698 - pr: 0.9731 - val_loss: 0.2388 - val_tp: 338551.0000 - val_fp: 5482.0000 - val_tn: 76038.0000 - val_fn: 49446.0000 - val_accuracy: 0.8830 - val_precision: 0.9841 - val_recall: 0.8726 - val_auc: 0.9630 - val_pr: 0.9921

为什么val_auc 从一个更大的改进为更小的一个,以及为什么它在下面一行中是0.96298 而不是0.9630

【问题讨论】:

    标签: python tensorflow keras tf.keras


    【解决方案1】:

    您需要将mode 参数设置为max 以每次保存最大val_auc

    checkpoint = tf.keras.callbacks.ModelCheckpoint(filepath=ckpt_path, mode="max", save_best_only=True, monitor='val_auc', verbose=1)
    

    参数mode 的文档解释了这一点:

    模式:{'auto'、'min'、'max'} 之一。如果save_best_only=True,则 覆盖当前保存文件的决定是基于 监控量的最大化或最小化。 对于val_acc,这应该是max,对于val_loss,这应该是 min 等 在auto 模式下,如果数量设置为max 监控为“acc”或以“fmeasure”开头,并设置为min 其余数量。

    由于默认值为auto,并且您正在监控val_auc而不是acc或以fmeasure开头的任何内容,因此将其设置为min

    日志中的 val_auc 被四舍五入到小数点后 4 位,这就是为什么您将其视为 0.9630 而不是 0.96298

    【讨论】:

      猜你喜欢
      • 2018-09-17
      • 2021-01-02
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      相关资源
      最近更新 更多