使用Keras和fit_generator的TensorBoard分布和直方图

时间:2017-02-23 20:45:13

标签: python tensorflow keras tensorboard

我正在使用Keras使用fit_generator函数训练CNN。

似乎是known issue,TensorBoard在此设置中不显示直方图和分布。

是否有人想出办法让它继续工作?

2 个答案:

答案 0 :(得分:9)

没有简单的方法可以用一行代码插入它,你必须手工编写摘要。

好消息是它并不困难,您可以在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

答案 1 :(得分:3)

我相信Bartgras的解释已被Keras的最新版本所取代(我使用的是Keras 2.2.2)。要在Tensorboard中获取直方图,我要做的就是:

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)