tensorboardXの基本的な使い方①
はじめに
今更ですが、tensorboardを触ってみました。
普段TensorFlowを使わないので、何となく避けてたのですが、
tensorboardXは「tensorboard for pytorch」ということで、
触ってみました。
結論から言うとめちゃくちゃ簡単で便利でした。
なので、備忘録として残そうと思います。
きっちりと理解したい人は公式のGithubやDocumentを見るのが良いと思います。
github.com
ここでは、利用頻度が高いと思わるものについて限定してまとめます。
基本
基本的な使い方は以下の通りです。
from tensorboardX import SummaryWriter writer = SummaryWriter() # build network # training # data to tensorboard writer.add_XXX writer.close()
作った後は以下をシェルで起動します。
tensorboard --logdir runs
立ち上がった後はブラウザから確認可能です。
add_scalar
1次元(スカラー値)の連続データを描画します。
add_scalar(tag, scalar_value, global_step=None, walltime=None)
サンプルはこんな感じです。
from tensorboardX import SummaryWriter writer = SummaryWriter() x = range(100) for i in x: writer.add_scalar('y=2x', i * 2, i) writer.close()
損失値の描画に使うとこんな感じになります。
for n_iter in range(epochs): train_loss = train(...) test_loss = test(...) writer.add_scalar('data/scalar1', train_loss, n_iter) writer.add_scalar('data/scalar2', test_loss, n_iter) writer.close()
add_scalars
訓練データとテストデータの損失値を合わせて描画したいです。
そんな場合は「add_scalars」を使うと便利です。
add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)
サンプルはこんな感じです。
from tensorboardX import SummaryWriter writer = SummaryWriter() r = 5 for i in range(100): writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r), 'xcosx':i*np.cos(i/r), 'tanx': np.tan(i/r)}, i) writer.close()
さて、訓練データとテストデータの損失値を合わせて描画します。
for n_iter in range(epochs): train_loss = train(...) test_loss = test(...) writer.add_scalars('data/scalars',{'train': train_loss, 'test': test_loss }, n_iter) writer.close()
ちなみにタグは「/」でグループ化できるみたいです。
テストの精度を含めてグループ化してみます。
for n_iter in range(epochs): train_loss = train(...) test_loss, test_acc = test(...) writer.add_scalars('model1/loss',{'train': train_loss, 'test': test_loss }, n_iter) writer.add_scalar('model1/acc', test_acc, n_iter) writer.close()
今回、紹介したのは add_scalar, add_scalars だけですが、
とりあえず、基本的な学習時の値を描画するのは十分かと思います。
本日、用いたコードは以下に置きました。
repo/tensorX.py at master · kento1109/repo · GitHub
次回は、Embeddingについてまとめたいと思います。