Я использую Keras для обучения CNN с помощью функции fit_generator.
Кажется, что известная проблема, что TensorBoard не показывает гистограммы и дистрибутивы в этой настройке.
Кто-нибудь выяснил, как заставить его работать?
Я использую Keras для обучения CNN с помощью функции fit_generator.
Кажется, что известная проблема, что TensorBoard не показывает гистограммы и дистрибутивы в этой настройке.
Кто-нибудь выяснил, как заставить его работать?
Нет простого способа подключить его с помощью одной строки кода, вы должны написать свои резюме вручную.
Хорошей новостью является то, что это не сложно, и вы можете использовать код обратного вызова TensorBoard в Keras в качестве ссылки: https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L537
По сути, напишите функцию, например write_summaries(model)
и вызывайте ее всякий раз, когда вы хотите написать свои резюме (например, сразу после вашего fit_generator()
)
Внутри ваши write_summaries(model)
использования функции tf.summary
, histogram_summary
и других итоговых функций для регистрации данных вы хотите видеть на tensorboard.
Если вы точно не знаете, как это сделать, посмотрите официальный учебник: 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)