从tensorboard事件文件中删除数据以使其更小

时间:2017-03-13 22:08:31

标签: tensorflow tensorboard

当我在激活图像摘要的情况下培训模型多天时,我的.tfevent文件很大(> 70GiB)。

我不想停用图像摘要,因为它允许我在训练期间可视化网络的进度。但是,一旦网络被训练,我就不再需要这些信息了(事实上,我甚至不确定是否可以使用张量板可视化以前的图像)。

我希望能够从事件文件中删除它们,而不会丢失其他信息,例如损失曲线(因为它可以将模型一起比较)。

解决方案是使用两个单独的摘要(一个用于图像,一个用于丢失),但我想知道是否有更好的方法。

3 个答案:

答案 0 :(得分:2)

当然,最好不要像Terry所建议的那样保存较大的摘要,但是如果您已经有一个很大的事件文件,则仍然可以通过删除一些摘要来减小其大小。

我遇到了这个问题,我保存了很多图像摘要,现在不需要了,因此我编写了一个脚本来复制事件文件,而只留下标量摘要: https://gist.github.com/serycjon/c9ad58ecc3176d87c49b69b598f4d6c6

重要的是:

for event in tf.train.summary_iterator(event_file_path):
    event_type = event.WhichOneof('what')
    if event_type != 'summary':
        writer.add_event(event)
    else:
        wall_time = event.wall_time
        step = event.step

        # possible types: simple_value, image, histo, audio
        filtered_values = [value for value in event.summary.value if value.HasField('simple_value')]
        summary = tf.Summary(value=filtered_values)

        filtered_event = tf.summary.Event(summary=summary,
                                          wall_time=wall_time,
                                          step=step)
        writer.add_event(filtered_event)

您可以以此为基础来处理更复杂的内容,例如仅保留每100个图像摘要,基于摘要标记进行过滤等。

答案 1 :(得分:0)

刚刚解决了这个问题,希望这还不算太晚。

我的解决方案是每100(或其他值)训练步骤保存图像摘要,然后.tfevent文件大小的增长速度将会变慢,最终文件大小会小得多。

答案 2 :(得分:0)

如果使用@serycjon循环查看日志中的事件类型,您会发现graph_defmeta_graph_def可能会经常保存。

我有46 GB的日志,通过删除所有图形将其减少到1.6 GB。您可以保留一个图形,以便仍可以在张量板上查看它。