使用 Keras 和 fit_generator 的 TensorBoard 分布和直方图
Posted
技术标签:
【中文标题】使用 Keras 和 fit_generator 的 TensorBoard 分布和直方图【英文标题】:TensorBoard Distributions and Histograms with Keras and fit_generator 【发布时间】:2017-07-14 12:44:44 【问题描述】:我正在使用 Keras 使用 fit_generator 函数训练 CNN。
似乎是known issue,TensorBoard 在此设置中没有显示直方图和分布。
有没有人想办法让它发挥作用?
【问题讨论】:
【参考方案1】:没有简单的方法只用一行代码插入它,您必须手动编写摘要。
好消息是它并不难,你可以使用 Keras 中的TensorBoard callback code 作为参考。 (还有一个 version 2 为 TensorFlow 2.x 做好准备。)
基本上,编写一个函数,例如write_summaries(model)
并在您想编写摘要时调用它(例如,就在您的 fit_generator()
之后)
在您的 write_summaries(model)
函数中,使用 tf.summary
、histogram_summary
和其他摘要函数来记录您希望在 tensorboard 上看到的数据。
如果您不知道如何查看official tutorial: 还有这个MNIST with summaries 的好例子。
【讨论】:
【参考方案2】:我相信 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)
【讨论】:
这里的名字是什么? 我使用的是 Keras 2.2.4,但仍然ValueError: If printing histograms, validation_data must be provided, and cannot be a generator.
@thebeancounter 您运行的名称。你可以把它变成你的超参数或者人类可读的东西。
-1 用于非信息性代码。什么是bg
、training_batch()
、validation_batch()
?我们甚至无法判断您传递的是发电机还是其他东西。以上是关于使用 Keras 和 fit_generator 的 TensorBoard 分布和直方图的主要内容,如果未能解决你的问题,请参考以下文章
Keras:网络不使用 fit_generator() 进行训练
keras:为 fit_generator 使用 ImageDataGenerator 和 KFold 的问题
keras 入门整理 如何shuffle,如何使用fit_generator