J'utilise Keras pour former un CNN à l'aide de la fonction fit_generator.
Il semble que ce soit problème conn que TensorBoard n'affiche pas les histogrammes et les distributions dans cette configuration.
Quelqu'un a-t-il trouvé un moyen de le faire fonctionner de toute façon?
Il n'y a pas de moyen simple de le brancher avec une seule ligne de code, vous devez écrire vos résumés à la main.
La bonne nouvelle est que ce n'est pas difficile et que vous pouvez utiliser le code de rappel TensorBoard dans Keras comme référence: https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L537
Fondamentalement, écrivez une fonction, par ex. write_summaries(model)
et appelez-la quand vous voulez écrire vos résumés (par exemple juste après votre fit_generator()
)
Dans votre fonction write_summaries(model)
utilisez tf.summary
, histogram_summary
et d'autres fonctions récapitulatives pour enregistrer les données que vous souhaitez voir sur le tensorboard.
Si vous ne savez pas exactement comment, consultez le didacticiel officiel: https://www.tensorflow.org/get_started/summaries_and_tensorboard et ce grand exemple de MNIST avec des résumés: https: // github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py
Je crois que l'explication de Bartgras est remplacée dans les versions plus récentes de Keras (j'utilise Keras 2.2.2). Pour obtenir des histogrammes dans Tensorboard, tout ce que j'ai fait était le suivant, (où bg
est une classe de conflit de données qui expose un générateur pour gb.training_batch()
; gb.validation_batch()
mais n'est PAS un générateur ):
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)