環境
- Python 3.6
- TensorFlow 1.13
- 今年中にはTensorFlow2.xが出るのだろうか、、、
やりたいこと
TensorBoardを試してみたかった。が、Qiitaをかいつまんで実行してもうまくいかない。。。
そこでMNISTの最小のコードを使ってサンプルを作る。
TensorBoardなしのMNISTコード
公式サイトのチュートリアルTOPページに載ってたやつそのまんま
import tensorflow as tf
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
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
とくにコケる要素はないと思う
TensorBoardありのMNISTコード
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
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
log_dir="logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M")
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])
model.evaluate(x_test, y_test)
変更点をいくつか
後述用のコールバック関数を定義 kerasがコールバック関数を持ってるのでそれを使う histogram_freq=1は必須 log_dirは日付とかにしといたほうがあとでごちゃごちゃにならないので吉
log_dir="logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M")
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])
あとこのコードではkerasもtensorboardも別途インストールはいらなかった
実行
TensorBoardを実行する
tensorboard --logdir logs
ローカルホスト以外のサーバーから実行した場合は--host 0.0.0.0
を付ける必要がある。
次はkerasと組み合わせて、、