首页 > 解决方案 > 如何正确使用 tf.data.TFRecordDataset 从 tf.summary 解析数据?

问题描述

连续多天,我试图解析 TensorBoard 日志以用于我自己的目的。我通过创建作家来创造这些

w = tf.summary.create_file_writer(...)

然后使用记录数据

with w.as_default():
    tf.summary.foo(...)

这会产生一个events.out.tfevents我想在 Python 中解析的文件。我已经在某种程度上实现了这一点,尽管使用summary_iteratorfrom以一种非常老套的方式tensorflow.python.summary,但根据TF 2.5.0,这已被弃用,这样做的预期方式显然是:

tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version.
Instructions for updating:
Use eager execution and: 
`tf.data.TFRecordDataset(path)`

所以我开始寻求使用 处理事件文件tf.data.TFRecordDataset,但我被卡住了。我尝试了多种解码功能,例如

def decode_fn(record_bytes):
    return tf.io.parse_raw(record_bytes)

def decode_fn(record_bytes):
    return tf.io.parse_tensor(record_bytes)

...

但它们都需要另一个参数,即结果dtype,这是我无法事先指定的(日志包含多个dtypesstr并且float是最常见的。

有没有人解决过这个问题?我很高兴看到解决方案。Tensorboard 团队使用 API 提供对这些日志的解码,但您必须将日志上传到他们的云中,这是一个可怕的、令人作呕的解决方案。

标签: pythontensorflowloggingtensorboard

解决方案


推荐阅读