> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ログの軸をカスタマイズする

> define_metric() を使用して、ログしたメトリクスの x 軸を、デフォルトの W&B の ステップ カウンターではなくカスタムの軸に設定します。

W\&B にメトリクスをログする際に、カスタムの x 軸を設定できます。デフォルトでは、W\&B はメトリクスを *ステップ* 単位でログします。各 ステップ は 1 回の `wandb.Run.log()` 呼び出しに対応します。

たとえば、次のスクリプトには 10 回反復する `for` ループがあります。スクリプトは反復処理のたびに `validation_loss` というメトリクスをログし、ステップ の数値を 1 ずつ増やします。

```python theme={"system"}
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)
```

project の Workspace では、`validation_loss` メトリクスが X 軸の `step` に対してプロットされます。`step` は `wandb.Run.log()` が呼び出されるたびに 1 ずつ増加します。前述のコードの場合、X 軸にはステップ番号 0、1、2、...、9 が表示されます。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/standard_axes.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=4d2e1f4fff4992c8c7bc61788e82ed94" alt="`step` を X 軸として使用するラインプロットパネル。" width="1600" height="776" data-path="products/wandb/_media/standard_axes.png" />
</Frame>

状況によっては、対数 X 軸など、別の X 軸に対してメトリクスをログするほうが適切な場合があります。[`define_metric()`](/ja/products/wandb/ref/python/experiments/run#define_metric) メソッドを使用すると、ログした任意のメトリクスをカスタム X 軸として使用できます。

Y 軸として表示するメトリクスは `name` パラメーターで指定し、X 軸として使用するメトリクスは `step_metric` パラメーターで指定します。カスタムメトリクスをログする際は、X 軸と Y 軸の両方の値を、辞書内のキーと値のペアとして指定してください。

カスタム X 軸メトリクスを設定するには、次のコードスニペットをコピー＆ペーストします。`<>` 内の値はご自身の値に置き換えてください。

```python theme={"system"}
import wandb

custom_step = "<custom_step>"  # カスタム X 軸の名前
metric_name = "<metric>"  # Y 軸に表示するメトリクスの名前

with wandb.init() as run:
    # step メトリクス（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"`) のモック値を使用します。

```python theme={"system"}
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` メトリクスは、カスタム x 軸 `x_axis_squared` に対してプロットされています。この x 軸は、for ループのインデックス `i` の二乗です。x 軸の値は `0, 1, 4, 9, 16, 25, 36, 49, 64, 81` で、それぞれ `0, 1, 2, ..., 9` の二乗に対応している点に注目してください。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/custom_x_axes.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=53184f58512279ecba6e041c233b6958" alt="カスタム x 軸を使用するラインプロットパネル。値はループ番号の二乗として W&B にログされています。" width="1590" height="820" data-path="products/wandb/_media/custom_x_axes.png" />
</Frame>

文字列の接頭辞を指定した `globs` を使用すると、複数のメトリクスにまとめてカスタム x 軸を設定できます。たとえば次のコードスニペットでは、接頭辞 `train/*` を持つログされたメトリクスを、x 軸 `train/step` に対してプロットします。

```python theme={"system"}
import wandb

with wandb.init() as run:

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

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