メインコンテンツへスキップ
W&B にメトリクスをログ記録する際、カスタムの x 軸を設定できます。デフォルトでは、W&B はメトリクスを steps としてログ記録します。各ステップは、1 回の wandb.Run.log() API コールに対応します。 例えば、以下のスクリプトには 10 回繰り返す for ループがあります。各イテレーションで、スクリプトは validation_loss という名前のメトリクスをログ記録し、ステップ番号を 1 ずつ増やします。
import wandb

with wandb.init() as run:
  # range 関数は 0 から 9 までの数列を作成します
  for i in range(10):
    log_dict = {
        "validation_loss": 1/(i+1)   
    }
    run.log(log_dict)
プロジェクトの Workspace では、validation_loss メトリクスは step を x 軸としてプロットされます。これは wandb.Run.log() が呼び出されるたびに 1 ずつ増加します。上記のコードでは、x 軸にはステップ番号 0, 1, 2, …, 9 が表示されます。
step を x 軸として使用する折れ線グラフパネル。
状況によっては、対数スケールの x 軸など、別の x 軸に対してメトリクスをログ記録する方が適切な場合があります。define_metric() メソッドを使用すると、ログ記録する任意のメトリクスをカスタム x 軸として使用できます。 y 軸として表示したいメトリクスを name パラメータで指定します。step_metric パラメータには、x 軸として使用したいメトリクスを指定します。カスタムメトリクスをログ記録する際は、辞書のキーと値のペアとして、x 軸と y 軸の両方の値を指定してください。 カスタム x 軸メトリクスを設定するには、以下のコードスニペットをコピー&ペーストしてください。<> 内の値は、ご自身の値に置き換えてください。
import wandb

custom_step = "<custom_step>"  # カスタム x 軸の名前
metric_name = "<metric>"  # y 軸メトリクスの名前

with wandb.init() as run:
    # ステップメトリクス(x 軸)と、それに対してログを記録するメトリクス(y 軸)を指定します
    run.define_metric(step_metric = custom_step, name = metric_name)

    for i in range(10):
        log_dict = {
            custom_step : int,  # x 軸の値
            metric_name : int,  # y 軸の値
        }
        run.log(log_dict)
例として、次のコードスニペットは x_axis_squared というカスタム x 軸を作成します。カスタム x 軸の値は、for ループのインデックス i の 2 乗(i**2)です。y 軸は、Python の組み込み random モジュールを使用した検証損失("validation_loss")のモック値で構成されています。
import wandb
import random

with wandb.init() as run:
    run.define_metric(step_metric = "x_axis_squared", name = "validation_loss")

    for i in range(10):
        log_dict = {
            "x_axis_squared": i**2,
            "validation_loss": random.random(),
        }
        run.log(log_dict)
以下の画像は、W&B App UI での結果のプロットを示しています。validation_loss メトリクスが、ループインデックス i の 2 乗であるカスタム x 軸 x_axis_squared に対してプロットされています。x 軸の値が、それぞれ 0, 1, 2, ..., 9 の 2 乗に対応する 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 になっていることに注目してください。
カスタム x 軸を使用する折れ線グラフパネル。値はループ番号の 2 乗として W&B にログ記録されます。
文字列のプレフィックスと globs を使用して、複数のメトリクスに対してカスタム x 軸を設定することもできます。例として、以下のコードスニペットは、train/* というプレフィックスを持つログ記録されたメトリクスを x 軸 train/step に対してプロットします。
import wandb

with wandb.init() as run:

    # 他のすべての train/ メトリクスがこのステップを使用するように設定します
    run.define_metric("train/*", step_metric="train/step")

    for i in range(10):
        log_dict = {
            "train/step": 2**i,  # 内部の W&B ステップに対して指数関数的に増加
            "train/loss": 1 / (i + 1),  # x 軸は train/step
            "train/accuracy": 1 - (1 / (1 + i)),  # x 軸は train/step
            "val/loss": 1 / (1 + i),  # x 軸は内部の wandb ステップ
        }
        run.log(log_dict)