【问题标题】:TensorBoard Distributions and Histograms with Keras and fit_generator使用 Keras 和 fit_generator 的 TensorBoard 分布和直方图
【发布时间】:2023-03-30 07:42:02
【问题描述】:

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

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

有没有人想办法让它发挥作用?

【问题讨论】:

    标签: python tensorflow keras tensorboard


    【解决方案1】:

    没有简单的方法只用一行代码插入它,您必须手动编写摘要。

    好消息是它并不难,你可以使用 Keras 中的TensorBoard callback code 作为参考。 (还有一个 version 2 为 TensorFlow 2.x 做好准备。)

    基本上,编写一个函数,例如write_summaries(model) 并在您想编写摘要时调用它(例如,就在您的 fit_generator() 之后)

    在您的 write_summaries(model) 函数中,使用 tf.summaryhistogram_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 用于非信息性代码。什么是bgtraining_batch()validation_batch()?我们甚至无法判断您传递的是发电机还是其他东西。
      猜你喜欢
      • 2017-04-18
      • 1970-01-01
      • 2018-09-16
      • 2018-06-03
      • 2020-05-11
      • 2019-10-26
      • 2018-10-12
      • 2019-08-03
      • 2017-06-07
      相关资源
      最近更新 更多