PyTorchモニタツール|学習プロセスの簡単なグラフ


ここでは、PyTorchでグラフなどを簡単に視覚化して見る方法をご紹介します.
そもそもMattplotlibしか知らないときは面倒なのであまり絵が描けませんが、視覚的に見ると確かに学習過程を理解するために必要な条件です.
次の道具は私が面倒を言うために使ったからです.
大部分の人は好きだろうな…?という考えがありました.☺️

Monitoring tools


これらは学習プロセスを追跡するためのツールです.

Tensorboard

  • Tensorflowのプロジェクトで作成されたビジュアル化ツール.
  • 学習グラフ、メトリック、学習結果の可視化をサポートします.

  • Tensorboardサポートツール

  • スカラー:公制等定数値の連続(epoch単位)を表す.
  • 図:モデルの計算図を表示します.
  • ヒストグラム:重み等値分布を表します.
  • 画像:予測値と実績値を比較表示します.
  • mesh:3 d形態データの表現ツール.
  • 使用方法


    まずTensorboardレコードのディレクトリを作成します.
    import os
    logs_base_dir = "logs"
    os.makedirs(logs_base_dir, exist_ok=True)
    レコード生成オブジェクトSummaryWriterを生成します.
    from torch.utils.tensorbard import SummaryWriter
    
    writer=SummaryWriter(logs_base_dir)
    for n_iter in ramge(100):
    	writer.add_scalar('Loss/train',np.random.random(),n_iter)
    	writer.add_scalar('Loss/test',np.random.random(),n_iter)
    	writer.add_scalar('Accuracy/train',np.random.random(),n_iter)
    	writer.add_scalar('Accuracy/test',np.random.random(),n_iter)
    writer.flush() # 값을 기록한다 (disk에 쓰기)
    add scalar関数add scalar関数:スカラー値の記録
    Loss/train:loss categoryでの列車値
    n iter:x軸の値
    jupyterでテンソルボードを実行する
    ファイルの場所などのコマンドを入力します.
    %load_ext tensorboard
    %tensorboard --logdir {logs_base_dir}

    Weight & biases (Wandb)


    初めて見た時もマンディビーかと思ったのですが、、、、ツインU-And-ビーだそうです.😮

    特長



    これは
  • 機械学習実験をサポートするための一般的なツールである.
  • コラボレーション、コードバージョン制御、実験結果記録などを提供します.
  • MLOpsの代表的なツールとしてローエンド拡張が行われている.
  • 設定

    !pip install wandb -q

    設定

    config = {"epochs":EPOCHS,"batch_size":BATCH_SIZE,"learning_rate":LEARNING_RATE}
    wandb.init(project="my-test-project",entity='~',config=config)
    # wandb.config.batch_size = BATCH_SIZE
    # wandb.config.learning_rate = LEARNING_RATE

    学習後の記録

    for e in range(1,EPOCHS+1):
    	epoch_loss=0
    	epoch_acc=0
    	for X_batch,y_batch in train_dataset:
    		X_batch, y_batch = X_batch.to(device),y_batch.to(device).type(torch.cuda.FloatTensor)
    		...
    		optimizer.step()
    		...
    	wandb.log({'accuracy':train_acc,'loss':train_loss}) # Tensorboard의 add와 동일