如何从tensorflow 2摘要编写器读取数据

2024-05-16 18:22:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在从tensorflow摘要编写器读取数据时遇到问题

我正在使用tensorflow网站上示例中的作者:https://www.tensorflow.org/tensorboard/migrate

import tensorflow as tf
from tensorboard.backend.event_processing.event_accumulator import EventAccumulator

writer = tf.summary.create_file_writer("/tmp/mylogs/eager")

# write to summary writer
with writer.as_default():
  for step in range(100):
    # other model code would go here
    tf.summary.scalar("my_metric", 0.5, step=step)
    writer.flush()

# read from summary writer
event_acc = EventAccumulator("/tmp/mylogs/eager")
event_acc.Reload()
event_acc.Tags()

收益率:

 'distributions': [],
 'graph': False,
 'histograms': [],
 'images': [],
 'meta_graph': False,
 'run_metadata': [],
 'scalars': [],
 'tensors': ['my_metric']}```

如果我试图获取张量数据:

import pandas as pd
pd.DataFrame(event_acc.Tensors('my_metric'))

我没有得到正确的值:

wall_time   step    tensor_proto
0   1.590743e+09    3   dtype: DT_FLOAT\ntensor_shape {\n}\ntensor_con...
1   1.590743e+09    20  dtype: DT_FLOAT\ntensor_shape {\n}\ntensor_con...
2   1.590743e+09    24  dtype: DT_FLOAT\ntensor_shape {\n}\ntensor_con...
3   1.590743e+09    32  dtype: DT_FLOAT\ntensor_shape {\n}\ntensor_con...
...

如何获取实际的摘要数据(对于100个步骤中的每一步,该数据应为0.5)

这是一个colab笔记本,上面有代码:https://colab.research.google.com/drive/1RlgZrGD_vY-YcOBLF_sEPelmtVuygkqz?usp=sharing


Tags: importeventtftensorflowasstepdtsummary
2条回答

您需要将事件累加器中存储为^{}消息的张量值转换为数组,您可以使用^{}执行以下操作:

pd.DataFrame([(w, s, tf.make_ndarray(t)) for w, s, t in event_acc.Tensors('my_metric')],
             columns=['wall_time', 'step', 'tensor'])

为了避免一系列步骤,我建议:

event_acc = EventAccumulator("/tmp/mylogs/eager", size_guidance={'tensors': 0})

enter image description here

相关问题 更多 >