如何从 tensorflow 2 摘要编写器读取数据 [英] How to read data from tensorflow 2 summary writer

查看:31
本文介绍了如何从 tensorflow 2 摘要编写器读取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm having trouble with reading data from a tensorflow summary writer.

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

I'm using the writer from the example on the tensorflow website: 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']}```

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

If I try to grab the tensor data:

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)?

How do I grab the actual summary data (which should be 0.5, for each of 100 steps)?

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

Here is a colab notebook with the code above: https://colab.research.google.com/drive/1RlgZrGD_vY-YcOBLF_sEPelmtVuygkqz?usp=sharing

推荐答案

需要在事件累加器中转换张量值,存储为 TensorProto 消息,放入数组中,您可以使用 tf.make_ndarray:

You need to convert the tensor values in the event accumulator, stored as TensorProto messages, into arrays, which you can do with tf.make_ndarray:

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

这篇关于如何从 tensorflow 2 摘要编写器读取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆