私は、Kerasを使用して、fit_generator関数を使用してCNNをトレーニングしています。
既知の問題 のようです。TensorBoardは、このセットアップではヒストグラムと分布を表示しません。
とにかくそれを機能させる方法を見つけた人はいましたか?
1行のコードでプラグインするだけの簡単な方法はありません。要約を手で書く必要があります。
幸いなことに、それは難しくなく、KerasのTensorBoardコールバックコードを参照として使用できます。 https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L537
基本的に、関数を書きます。 write_summaries(model)
そして、要約を書きたいときはいつでも呼び出します(例:fit_generator()
の直後)
write_summaries(model)
関数内で、tf.summary
、histogram_summary
およびその他の集計関数を使用して、テンソルボードに表示するデータを記録します。
正確な方法がわからない場合は、公式チュートリアルを確認してください: https://www.tensorflow.org/get_started/summaries_and_tensorboard および要約付きのMNISTのこの素晴らしい例: https:// github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py
Bartgrasの説明は、Kerasのより新しいバージョン(私はKeras 2.2.2を使用している)に取って代わられると思います。 Tensorboardでヒストグラムを取得するために私がしたことは次のとおりです(bg
はgb.training_batch()
; gb.validation_batch()
のジェネレーターを公開するデータラングリングクラスですが、ジェネレーターではありません):
NAME = "Foo_{}".format(datetime.now().isoformat(timespec='seconds')).replace(':', '-')
tensorboard = keras.callbacks.TensorBoard(
log_dir="logs/{}".format(NAME),
histogram_freq=1,
write_images=True)
callbacks = [
tensorboard
]
history = model.fit_generator(
bg.training_batch(),
validation_data=bg.validation_batch(),
epochs=EPOCHS,
steps_per_Epoch=bg.steps_per_Epoch,
validation_steps=bg.validation_steps,
verbose=1,
shuffle=False,
callbacks=callbacks)