【发布时间】:2022-07-25 20:36:34
【问题描述】:
我希望在 keras 模型的训练/测试阶段,通过在每个 epoch 之后存储相应指标的每个值,将损失和准确率等指标作为图表来查看。
PS:我知道我们可以通过使用 keras 的 mlflow 的自动日志功能来做到这一点,如下所示,但我不想使用它。
mlflow.keras.autolog()
【问题讨论】:
我希望在 keras 模型的训练/测试阶段,通过在每个 epoch 之后存储相应指标的每个值,将损失和准确率等指标作为图表来查看。
PS:我知道我们可以通过使用 keras 的 mlflow 的自动日志功能来做到这一点,如下所示,但我不想使用它。
mlflow.keras.autolog()
【问题讨论】:
在网上搜索并结合一些概念后,我能够解决我提出的问题。在 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
)
【讨论】: