メインコンテンツへスキップ
W&B にメトリクスをログするとき、カスタムの x 軸を設定できます。デフォルトでは、W&B はメトリクスを steps としてログします。各 step は wandb.Run.log() API 呼び出し 1 回に対応します。 たとえば、次のスクリプトには 10 回ループする for ループがあります。各反復で、スクリプトは validation_loss というメトリクスをログし、step 番号を 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)
プロジェクトのワークスペースでは、validation_loss メトリクスが step の x 軸に対してプロットされます。stepwandb.Run.log() が呼び出されるたびに 1 ずつ増加します。前述のコードでは、x 軸には 0, 1, 2, …, 9 の step 番号が表示されます。
x 軸として `step` を使用する折れ線プロットパネル。
状況によっては、対数スケールの x 軸など、別の x 軸に対してメトリクスをログする方が適している場合があります。ログした任意のメトリクスをカスタム x 軸として使用するには、define_metric() メソッドを使用します。 y 軸として表示したいメトリクスを name パラメータで指定します。step_metric パラメータでは、x 軸として使用したいメトリクスを指定します。カスタム 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 の二乗(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 メトリクスは、for ループのインデックス i の二乗であるカスタム x 軸 x_axis_squared に対してプロットされています。x 軸の値は 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 であり、それぞれ 0, 1, 2, ..., 9 の二乗に対応していることに注意してください。
カスタム x 軸を使用する折れ線プロットパネル。ループ番号の二乗としての値が 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)