deep learning のフレームワークは、最近は TensorFlow か PyTorch を使用することが多いと思います(他にも色々ありますが)。
TensolFlow には TensolBoard という、loss, accracy などの学習の進行やモデルを可視化する便利なツールがついています。
TensorBoard は現在では Google Colaboratory のノートブック内で使用できるようになっており、またフレームワークの垣根を越えて PyTorch からも使用できるようになっています。
そこで PyTorch から簡単に使ってみたいと思います(実は初 PyTorch)。
使用する環境
Google Colaboratory を使用します。
ソースコード
最初のマジックコマンドは TensolFlow 利用時と同様です。
参考: 簡単 3分 TensorBoard in Google Colab
from __future__ import absolute_import, division, print_function, unicode_literals
try:
# %tensorflow_version only exists in Colab.
%tensorflow_version 2.x
except Exception:
pass
# Load the TensorBoard notebook extension
%load_ext tensorboard
PyTorch のドキュメントに例がありますので、こちらを実行してみます。
https://pytorch.org/docs/stable/tensorboard.html
ResNet という画像判別モデルで、MNIST という入門用数字画像のデータセットを学習します。
SummaryWriter を使用して、画像やモデルを出力します。
import torch
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import datasets, transforms
# Writer will output to ./runs/ directory by default
writer = SummaryWriter()
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
model = torchvision.models.resnet50(False)
# Have ResNet model take in grayscale rather than RGB
model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
images, labels = next(iter(trainloader))
grid = torchvision.utils.make_grid(images)
writer.add_image('images', grid, 0)
writer.add_graph(model, images)
writer.close()
TensorBoard の実行です。
SummaryWritter はデフォルトで ./runs/ directory
に出力するとありましたので、runs を logdir として指定します。
%tensorboard --logdir=runs
実行結果
ノートブックのセル内に TensolBoard が表示されます。
学習時の Accuracy と loss のグラフ
loss の落ち具合などを確認します(落ちていませんが Expected result とだいたい同じ)。
ネットワークの構成
ニューラルネットの構成がわかります。個人的にはこれが便利です。
おわりに
PyTorch でも TensorBoard が使えるのは、かなり便利ではないでしょうか。
Google Colaboratory で PyTorch されている方、ぜひ使ってみてください!