チュートリアル: カスタムチャートの使用
W&B UI でのカスタムチャート機能の使用に関するチュートリアル
2 minute read
W&Bプロジェクトでカスタムチャートを作成しましょう。任意のデータテーブルをログし、自由に可視化できます。フォント、色、ツールチップの詳細をVegaの力でコントロールしましょう。
wandb.plot_table()
で呼び出します。期待したデータが表示されない場合、選択した Runs に求めている列がログされていない可能性があります。チャートを保存し、Runsテーブルに戻って、選択した Runs を目のアイコンで確認してください。
W&Bにはスクリプトから直接ログできるいくつかの組み込みチャートプリセットがあります。これらには、ラインプロット、スキャッタープロット、バーチャート、ヒストグラム、PR曲線、ROC曲線が含まれます。
wandb.plot.line()
カスタムラインプロットをログします — 任意の軸xとy上の接続され順序付けされた点(x,y)のリストです。
data = [[x, y] for (x, y) in zip(x_values, y_values)]
table = wandb.Table(data=data, columns=["x", "y"])
wandb.log(
{
"my_custom_plot_id": wandb.plot.line(
table, "x", "y", title="Custom Y vs X Line Plot"
)
}
)
ラインプロットは任意の2次元上に曲線をログします。もし2つのlistの値を互いにプロットする場合、listの値の数が完全に一致している必要があります(例えば、各点はxとyを持たなければなりません)。
例のレポートを確認するか、例のGoogle Colabノートブックを試すことができます。
wandb.plot.scatter()
カスタムスキャッタープロットをログします — 任意の軸xとy上の点(x, y)のリストです。
data = [[x, y] for (x, y) in zip(class_x_prediction_scores, class_y_prediction_scores)]
table = wandb.Table(data=data, columns=["class_x", "class_y"])
wandb.log({"my_custom_id": wandb.plot.scatter(table, "class_x", "class_y")})
任意の2次元上にスキャッターポイントをログするためにこれを使うことができます。もし2つのlistの値を互いにプロットする場合、listの値の数が完全に一致している必要があります(例えば、各点はxとyを持たなければなりません)。
例のレポートを確認するか、例のGoogle Colabノートブックを試すことができます。
wandb.plot.bar()
カスタムバーチャートをログします — ラベル付き値のリストをバーとして表示する — 数行でネイティブに:
data = [[label, val] for (label, val) in zip(labels, values)]
table = wandb.Table(data=data, columns=["label", "value"])
wandb.log(
{
"my_bar_chart_id": wandb.plot.bar(
table, "label", "value", title="Custom Bar Chart"
)
}
)
任意のバーチャートをログするためにこれを使用することができます。list内のラベルと値の数は完全に一致している必要があります(例えば、各データポイントが両方を持つ必要があります)。
例のレポートを確認するか、例のGoogle Colabノートブックを試すことができます。
wandb.plot.histogram()
カスタムヒストグラムをログします — いくつかの行で値をカウントまたは出現頻度によってビンにソートします。予測信頼度スコア(scores
)のリストがあるとしましょう。それらの分布を可視化したいとします。
data = [[s] for s in scores]
table = wandb.Table(data=data, columns=["scores"])
wandb.log({"my_histogram": wandb.plot.histogram(table, "scores", title=None)})
任意のヒストグラムをログするためにこれを使用することができます。注意として、 data
は list of lists であり、2次元配列の行と列をサポートすることを意図しています。
例のレポートを確認するか、例のGoogle Colabノートブックを試すことができます。
wandb.plot.pr_curve()
Precision-Recall curve を1行で作成します。
plot = wandb.plot.pr_curve(ground_truth, predictions, labels=None, classes_to_plot=None)
wandb.log({"pr": plot})
コードが次にアクセス可能なときにこれをログできます:
predictions
) の一群の例ground_truth
)labels=["cat", "dog", "bird"...]
ラベルインデックス0はcat、1番目はdog、2番目はbird…)例のレポートを確認するか、例のGoogle Colabノートブックを試すことができます。
wandb.plot.roc_curve()
ROC curve を1行で作成します。
plot = wandb.plot.roc_curve(
ground_truth, predictions, labels=None, classes_to_plot=None
)
wandb.log({"roc": plot})
コードが次にアクセス可能なときにこれをログできます:
predictions
) の一群の例ground_truth
)labels=["cat", "dog", "bird"...]
ラベルインデックス0はcat、1番目はdog、2番目はbird…)例のレポートを確認するか、例のGoogle Colabノートブックを試すことができます。
組み込みプリセットを調整するか新しいプリセットを作成し、チャートを保存します。チャートIDを使ってそのカスタムプリセットに直接スクリプトからデータをログします。例のGoogle Colabノートブックを試す。
# プロットする列を持つテーブルを作成します
table = wandb.Table(data=data, columns=["step", "height"])
# テーブルの列からチャートのフィールドへのマッピング
fields = {"x": "step", "value": "height"}
# 新しいカスタムチャートプリセットを埋めるためにテーブルを使用
# 保存した自身のチャートプリセットを使用するには、vega_spec_nameを変更します
my_custom_chart = wandb.plot_table(
vega_spec_name="carey/new_chart",
data_table=table,
fields=fields,
)
スクリプトから次のデータタイプをログし、カスタムチャートで使用できます。
wandb.config
にキーとしてログされた名前付きフィールドを含みます。例えば: wandb.config.learning_rate = 0.0001
wandb.log({"val_acc" : 0.8})
。トレーニング中に wandb.log()
を使用してキーに複数回書き込んだ場合、サマリーはそのキーの最終的な値に設定されます。history
フィールドを通じてクエリに利用可能です。wandb.Table()
を使用してそのデータを保存し、それをカスタムパネルでクエリします。historyTable
をクエリします。 wandb.Table()
の呼び出しごとまたはカスタムチャートのログごとに、そのステップにおける履歴に新しいテーブルが作成されます。wandb.Table()
を使ってデータを2次元配列としてログします。一般的にこのテーブルの各行は一つのデータポイントを表し、各列はプロットしたい各データポイントの関連フィールド/次元を示しています。カスタムパネルを設定する際、 wandb.log()
に渡された名前付きキー(以下の custom_data_table
)を通じてテーブル全体にアクセスでき、個別のフィールドには列の名前(x
, y
, z
)を通じてアクセスできます。実験のさまざまなタイムステップでテーブルをログすることができます。各テーブルの最大サイズは10,000行です。例のGoogle Colabを試す。
# データのカスタムテーブルをログする
my_custom_data = [[x1, y1, z1], [x2, y2, z2]]
wandb.log(
{"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])}
)
新しいカスタムチャートを追加して開始し、次にクエリを編集して表示可能な Runs からデータを選択します。クエリはGraphQLを使用して、実行での設定、サマリー、履歴フィールドからデータを取得します。
右上のChartを選択してデフォルトプリセットから始めましょう。次に、Chart fieldsを選択してクエリから引き出したデータをチャートの対応するフィールドにマッピングします。
次の画像は、メトリックをどのように選択し、それを下のバーチャートフィールドにマッピングするかの一例を示しています。
パネルの上部にあるEditをクリックしてVega編集モードに入ります。ここでは、Vega仕様を定義して、UIでインタラクティブなチャートを作成することができます。チャートの任意の面を変更できます。例えば、タイトルを変更したり、異なるカラー スキームを選択したり、曲線を接続された線ではなく一連の点として表示したりできます。また、Vega変換を使用して値の配列をヒストグラムにビン分けするなど、データ自体にも変更を加えることができます。パネルプレビューはインタラクティブに更新されるため、Vega仕様やクエリを編集している間に変更の効果を確認できます。Vegaのドキュメントとチュートリアルを参照してください。
フィールド参照
W&Bからチャートにデータを引き込むには、Vega仕様のどこにでも"${field:<field-name>}"
形式のテンプレート文字列を追加します。これによりChart Fieldsエリアにドロップダウンが作成され、ユーザーがクエリ結果の列を選択してVegaにマップできます。
フィールドのデフォルト値を設定するには、この構文を使用します:"${field:<field-name>:<placeholder text>}"
モーダルの下部にあるボタンで、特定の可視化パネルに変更を適用します。または、プロジェクト内の他の場所で使用するためにVega仕様を保存できます。使い回しができるチャート定義を保存するには、Vegaエディタの上部にあるSave asをクリックしてプリセットに名前を付けます。
W&B UI でのカスタムチャート機能の使用に関するチュートリアル
このページは役に立ちましたか?
Glad to hear it! If you have further feedback, please let us know.
Sorry to hear that. Please tell us how we can improve.