※ この記事は、読者がWandBの基本的な使い方を知っている前提で書かれています。WandBの基本についてはこちらで紹介しているのでご参照ください:
WandBを使った複雑なプロット描写
Weights and Biases (WandB)ではデフォルトの折線グラフに加え、混合行列やパラレル・コーディネイト図など、より複雑な図表を図示することも可能です。本記事で以下の図について、描写方法や使い方を紹介します。
- 混合行列
- 複数の線がある折線グラフ
- パラレル・コーディネイト
- 散布図(追加予定)
- 特徴量の重要度(追加予定)
- ヒストグラム(追加予定)
複雑なプロットはレンダリングに時間がかかることがあります。また、使い過ぎるとブラウザが重くなるので注意してください。
混合行列
分類問題において、混合行列を可視化する際に役立ちます。WebUI上では、以下(左)のように棒グラフとして表示されます。また、複数のrunを比較(右)することもできるので、複数モデルの比較や、train・testの比較などが容易にできます。
描写コードは以下の通りです。
labels = [1,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0]
preds = [1,0,0,1,1,0,1,1,0,0,1,0,1,1,0,0,1,1,1,0]
wandb.log({"conf_mat" : wandb.plot.confusion_matrix(probs=None,
y_true=labels, preds=preds,
class_names=["cat","dog"],)})
-
y_true
:list型 正解ラベルのリスト -
preds
:list型 予測ラベルのリスト -
class_names
:list型 クラス名のリスト(要素のindexがラベルの値と紐づく。上の例で言うと、0番目の'cat'がラベル0と紐づいている。)
参考文献:
複数の線がある折線グラフ
複数の学習曲線を描写したい場合などに役立ちます。WebUI上では、以下(左)のように表示され、各線の識別は線の色ではなく点線の形で行います。複数のrunを比較(右)する場合は、色でrunを識別することになります。
描写コードは以下の通りです。
x_list = list(range(10))
list_of_y_list = [ [x**2 for x in x_list], [x**3 for x in x_list], [x**4 for x in x_list] ]
key_list = ["x^2", "x^3", "x^4"]
wandb.log({"my_multiplot" : wandb.plot.line_series(
xs=list(range(10)),
ys=list_of_y_list,
keys=key_list,
title="x to the power of N",
xname="x")})
wandb.finish()
-
xs
:list型 x値のリスト -
ys
:list型 各線のy値のリストが含まれたリスト -
keys
:list型 各線のラベルのリスト(要素のindexがラベルの値と紐づく)
参考文献:
パラレル・コーディネイト
ハイパラの最適化などをする際に役立ちます。例えば以下の例では、学習時のバッチサイズ、チャンネル数、学習率が最終的な精度に与える影響を可視化しています。混合行列やmulti-line plotと違い、複数runの情報をまとめて表示するため、手元に複数のrunがあることが前提となります。
描写時に使いたい情報をwandb.config
に登録するか、wandb.log()
で記録をします。
config = {'batch_size': 128, 'channels_one': 30, 'learning_rate':0.025}
wandb.init(config = config)
accuracy = get_accuracy(model,testloader)
wandb.log({'accuracy':accuracy})
描写はWebUI経由から行います。(複数runの情報をまとめて表示するので、1つのrunのコードで描写をすること自体ができません。)
- まず、任意の「section」で、「Add Panel」ボタンをクリックし、表示されたオプションの中から「Parallel Coordinates」を選択します。
2. 「Add a column」ボタンから、追加したいカラム名を選択します。ここで、wandb.config
で追加し情報には歯車マークが、wandb.log()
で追加した情報にはグラフマークがついているはずです。
3. 複数のカラムを選択し終えたら、それで終わりです。「Axes」タブで一番下にあるカラムが、プロット上では一番右側に来る仕様です。
参考文献: