2

我正在尝试KerasTunerMlflow. 我想记录 Keras Tuner 每次试用的每个 epoch 的损失。

我的做法是:

class MlflowCallback(tf.keras.callbacks.Callback):
    
    # This function will be called after each epoch.
    def on_epoch_end(self, epoch, logs=None):
        if not logs:
            return
        # Log the metrics from Keras to MLflow     
        mlflow.log_metric("loss", logs["loss"], step=epoch)
    

from kerastuner.tuners import RandomSearch

with mlflow.start_run(run_name="myrun", nested=True) as run:
  
  tuner = RandomSearch(
      train_fn,
      objective='loss',
      max_trials=25, 
  )
  tuner.search(train,
              validation_data=validation, 
              validation_steps=validation_steps,
              steps_per_epoch=steps_per_epoch, 
              epochs=5, 
              callbacks=[MlflowCallback()]
  )

然而,损失值是在一个实验中(按顺序)报告的。有没有办法独立记录它们? 损失值

4

1 回答 1

0

以下带有mlflow.start_run(run_name="myrun", nested=True)as run: 的代码行将生成每个训练都存储在相同的“实验”中。

避免使用它,它mlfow会自动为每一次训练创建一个不同的实验tuner.serach

于 2022-02-02T14:38:07.643 回答