【问题标题】:How can I save loss and accuracy metrics in mlflow after each epoch?在每个 epoch 之后,如何在 mlflow 中保存损失和准确度指标?
【发布时间】:2022-07-25 20:36:34
【问题描述】:

我希望在 keras 模型的训练/测试阶段,通过在每个 epoch 之后存储相应指标的每个值,将损失和准确率等指标作为图表来查看。

PS:我知道我们可以通过使用 keras 的 mlflow 的自动日志功能来做到这一点,如下所示,但我不想使用它。

mlflow.keras.autolog()

【问题讨论】:

    标签: keras mlflow


    【解决方案1】:

    在网上搜索并结合一些概念后,我能够解决我提出的问题。在 Keras 中,我们可以创建自定义回调,这些回调可以在模型的训练、测试和预测阶段的各个点(epoch 的开始/结束、批处理等)调用。

    因此,我创建了一个 Keras 自定义回调,用于在每个 epoch 之后将损失/准确度值存储为如下所示的 mlflow 指标。

    class CustomCallback(keras.callbacks.Callback):
        def on_epoch_end(self, epoch, logs=None):
            mlflow.log_metrics({
               "loss": logs["loss"],
               "sparse_categorical_accuracy":
                   logs["sparse_categorical_accuracy"],
               "val_loss": logs["val_loss"],
               "val_sparse_categorical_accuracy":
                   logs["val_sparse_categorical_accuracy"],
        })
    

    我在训练我的模型时调用了上述回调,如下所示。

    history = model.fit(
        features_train,
        labels_train,
        batch_size=BATCH_SIZE,
        epochs=EPOCHS,
        callbacks=[CustomCallback()],
        validation_split=0.2
    )
    

    keras 自定义回调在每个 epoch 之后的训练期间存储了所有值,我可以在 mlflow UI 中看到如下图所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-01
      • 2017-10-23
      • 2019-08-14
      • 2021-02-01
      • 2020-03-07
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      相关资源
      最近更新 更多