web-dev-qa-db-ja.com

Kerasとfit_generatorを使用したTensorBoardの分布とヒストグラム

私は、Kerasを使用して、fit_generator関数を使用してCNNをトレーニングしています。

既知の問題 のようです。TensorBoardは、このセットアップではヒストグラムと分布を表示しません。

とにかくそれを機能させる方法を見つけた人はいましたか?

17
Jonathan Roth

1行のコードでプラグインするだけの簡単な方法はありません。要約を手で書く必要があります。

幸いなことに、それは難しくなく、KerasのTensorBoardコールバックコードを参照として使用できます。 https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L537

基本的に、関数を書きます。 write_summaries(model)そして、要約を書きたいときはいつでも呼び出します(例:fit_generator()の直後)

write_summaries(model)関数内で、tf.summaryhistogram_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

10
bartgras

Bartgrasの説明は、Kerasのより新しいバージョン(私はKeras 2.2.2を使用している)に取って代わられると思います。 Tensorboardでヒストグラムを取得するために私がしたことは次のとおりです(bggb.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)
3
Jay Borseth