2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【応用編】WandBの応用 〜複雑なプロット描写〜

Last updated at Posted at 2023-05-29

※ この記事は、読者が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_truelist型 正解ラベルのリスト
  • predslist型 予測ラベルのリスト
  • class_nameslist型 クラス名のリスト(要素の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()
  • xslist型 x値のリスト
  • yslist型 各線のy値のリストが含まれたリスト
  • keyslist型 各線のラベルのリスト(要素のindexがラベルの値と紐づく)

参考文献:

パラレル・コーディネイト

ハイパラの最適化などをする際に役立ちます。例えば以下の例では、学習時のバッチサイズ、チャンネル数、学習率が最終的な精度に与える影響を可視化しています。混合行列やmulti-line plotと違い、複数runの情報をまとめて表示するため、手元に複数のrunがあることが前提となります。

Screen Shot 2023-05-17 at 17.01.41.png

描写時に使いたい情報を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のコードで描写をすること自体ができません。)

  1. まず、任意の「section」で、「Add Panel」ボタンをクリックし、表示されたオプションの中から「Parallel Coordinates」を選択します。


2. 「Add a column」ボタンから、追加したいカラム名を選択します。ここで、wandb.configで追加し情報には歯車マークが、wandb.log()で追加した情報にはグラフマークがついているはずです。

3. 複数のカラムを選択し終えたら、それで終わりです。「Axes」タブで一番下にあるカラムが、プロット上では一番右側に来る仕様です。

参考文献:

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?