当我在激活图像摘要的情况下培训模型多天时,我的.tfevent
文件很大(> 70GiB)。
我不想停用图像摘要,因为它允许我在训练期间可视化网络的进度。但是,一旦网络被训练,我就不再需要这些信息了(事实上,我甚至不确定是否可以使用张量板可视化以前的图像)。
我希望能够从事件文件中删除它们,而不会丢失其他信息,例如损失曲线(因为它可以将模型一起比较)。
解决方案是使用两个单独的摘要(一个用于图像,一个用于丢失),但我想知道是否有更好的方法。
答案 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_def
和meta_graph_def
可能会经常保存。
我有46 GB的日志,通过删除所有图形将其减少到1.6 GB。您可以保留一个图形,以便仍可以在张量板上查看它。