【问题标题】:When do I have to use TensorFlow's FileWriter.flush() method?我什么时候必须使用 TensorFlow 的 FileWriter.flush() 方法?
【发布时间】:2019-02-28 04:46:57
【问题描述】:

我目前在一个稍大的 TensorFlow 项目中工作,并尝试像往常一样可视化我的网络的某些变量,即执行此工作流

  1. 通过tf.summary.scalar('loss', loss)声明我要跟踪的变量
  2. 通过summary_op = tf.summary.merge_all()收集它们
  3. 将我的作者声明为writer = tf.summary.FileWriter('PATH') 并添加图表
  4. 通过s = sess.run(summary_op) 在我的训练迭代期间评估汇总操作
  5. 最后通过writer.add_summary(s, epoch)将它添加到我的作者

通常这对我有用。但是这一次,我只显示了图表,当我检查事件文件时,我发现它是空的。巧合的是,我发现有人建议在将我的摘要添加为第六步后使用writer.flush()。这解决了我的问题。

因此,合乎逻辑的后续问题是:我必须何时以及如何使用FileWriter.flush() 才能使 tensorflow 正常工作?

【问题讨论】:

    标签: python tensorflow tensorboard


    【解决方案1】:

    您可以随时致电flush,真的。这对您来说可能很清楚,但以防万一(以及其他读者),FileWriter 不会立即将给定的摘要写入磁盘。这是因为写入磁盘相对较慢,如果您创建非常频繁的摘要(即每个批次),这样做可能会损害您的性能,因此FileWriter 保留一个仅“每隔一段时间”写入的事件缓冲区(最后当它关闭时)。但是,这意味着 TensorBoard 不会立即看到书面摘要。 flush 可以强制 FileWriter 将内存中的任何内容写入磁盘。

    如果您生成的摘要频率较低(例如每 100 个批次),那么在 add_summary 之后调用 flush 可能就可以了。如果您不断生成摘要,但对FileWriter 的同步频率不满意,则可以使用flush,例如每十次或类似的频率。我的意思是,你也可以在每次迭代中都使用它,它可能不会产生如此大的差异,但它也不会给你带来如此大的好处。当然,任何潜在的性能影响都取决于您的问题和您的基础设施(它不是与图像相同的日志记录标量,也不是记录到本地 SSD 驱动器而不是网络存储,或者具有数百个元素的大而慢的批次而不是微小的, 快速批量只有几个)。

    不过,一般来说,它很少是一个重要的性能因素。对于简单的场景,您在add_summary 之后添加flush 的建议(一个flush,如果您有多次调用add_summary,请不要在每个之后添加flush,仅在最后一个之后)是最可能已经足够好了。

    编辑:tf.summary.FileWriter 实际上提供了一个构造参数flush_secs,它定义了编写器将挂起事件自动刷新到磁盘的频率。默认为两分钟。还有一个max_queue,它定义了内部事件队列(事件的缓冲区)的大小。

    【讨论】:

    • 现在说得通了。我不知道 FileWriter 缓冲摘要的事实。谢谢!
    • 对于max_queue,如果当前大小为默认值的10,当有新事件到来时,写入器会刷新吗?
    • 既然有flush_secs,我应该打电话给.flush()吗?我的意思是tf.summary.FileWriter 会在.add_summary() 中自动调用.flush() 吗?
    • @GoingMyWay 文档记录不多,但据我了解,max_queueflush_secs 确定文件写入器何时刷新。如果您缓冲了max_queue 事件并再提交一个,则文件写入将刷新,如果自上次刷新以来已超过flush_secs,它也将刷新(我不知道这是否由专用线程或仅在提交事件后)。所以,add_summary 不会总是刷新。但是,作者总是会在关闭时刷新。
    • 谢谢,我发现它会在flush_secs之后刷新github.com/tensorflow/tensorflow/blob/…
    猜你喜欢
    • 2017-03-22
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2020-03-06
    • 2014-11-08
    • 2013-10-23
    相关资源
    最近更新 更多