TensorBoardについて


Tensorboard について

はじめに

前回に引き続き機械学習における可視化に関することで Tensorboard について調べたのでまとめてみました。

Tensorboard とは

TensorFlow を用いて学習させる際に、計算の過程や計算も出るを可視化できるようにするものです。

Tensorboard を使用するメリット

学習の過程を視覚かすることができるため、正常に学習が行われているかどうかを確認できます。また、ハイパーパラメータの調整にも役立ちます。
何より自分で各エポックごとに正答率などの数値を記録してグラフにして......などという作業をしなくてよくなります。

Tensorboard を使う

基本的に GoogleColaboratory で動作する方法を記述していきます。
コードは公式のものを使用します。

まず Tensorboard を使用し始めるために以下のコマンドを実行します。

%load_ext tensorboard

次に最も簡単な mnist のデータセットを用いて Tensorboard を使用します。
Keras の model.fit()を用いて学習させる前に
tf.keras.callbacks.Tensorboard
でコールバック関数を設定してログを記録させます。

main.py
import tensorflow as tf
import datetime

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
    return tf.keras.models.Sequential([
        tf.keras.layers.Flatten(input_shape=(28,28)),
        tf.keras.layers.Dense(512, activation='relu'),
        tf.keras.layers.Dropout(0.2),
        tf.keras.layers.Dense(10,activation='softmax')
    ])

    model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train,
          y=y_train,
          epochs=5,
          validation_data=(x_test, y_test),
          callbacks=[tensorboard_callback])

学習が終了したら

%tensorboard --logdir logs/fit

を実行します。

そうすると以下の画像のようなものが表示されると思います。
GoogleColaboratory で実行すると少し表示に時間がかるかもしれません。

Scalars ではエポック毎に損失とメトリックの変化をグラフにしてくれています。正しく学習できているかどうかを見ることができます。

Histograms ではニューラルネットワークの各層を勾配消失しているかなどの確認することができます

他にも、学習で使用した画像を表示することで正しい訓練データを使用しているのかを確認したりグラフでモデルが正しく設計されているかを見れたりします。

さいごに

前回に引き続き機械学習における視覚化について扱いました。

今まで Tensorflow を用いることは多くあったのですが、Tensorboard については全く知りませんでした。
ほんの少ない記述だけで非常に便利になるので使わない手はないと思います。

思っていたよりも機械学習の課題であるブラックボックス化に対して対策が講じられていることを知れて勉強になりました。