tensorflow Tensorboard:访问event_accumulator标签中的Tensor对象

uqjltbpv  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(142)

我正在尝试访问存储在Tensorboard文件中的一些数据。我不希望在浏览器中使用Tensorboard GUI打开它,而是直接在Python脚本中打开它,以便能够进行进一步的计算。
当前代码:

file = # here, filename is provided
ea = event_accumulator.EventAccumulator(event_file[0])
ea.Reload()
print(ea.Tags())

现在,我的标签(ea.Tags())是这样的:

{'histograms': [], 'scalars': [], 'tensors': ['observable1', 'observable2' ], ...}

第一件有趣的事情是,我的观测数据不是保存在“标量”中,而是保存在“Tensor”中。我现在如何访问这些观测数据?我希望两个观测数据中的每一个都给出一个数组/一个值列表(这是我感兴趣的),可能还有一些与Tensor相关的数据,如形状,数据类型等。
我已经试过使用

x=ea.Tensors("observable1")
print(x[0])

或类似的,但我被困在那里,因为输出是这样的:

TensorEvent(wall_time=1234567890.987654, step=123, tensor_proto=dtype: DT_FLOAT
tensor_shape {
}
tensor_content: "\123Y\123@"
)

x 似乎有一个固定的长度10,这在某种程度上出乎我的意料。有人有主意吗?我在互联网上找到的所有解释都只涉及Tensorboard文件中的标量

sczxawaw

sczxawaw1#

前提是它以前被写为

from torch.utils.tensorboard import SummaryWriter
tensorboard_writer=SummaryWriter(log_dir=logpath)
tensorboard_writer.add_scalar("loss_val", loss, parameter)

本例将提取分数:

from tensorboard.backend.event_processing.event_accumulator import EventAccumulator
    
event_acc = EventAccumulator(logpath, size_guidance={"scalars": 0})
event_acc.Reload()

for scalar in event_acc.Tags()["scalars"]:
    w_times, step_nums, vals = zip(*event_acc.Scalars(scalar))

也许写标量没有成功?

vnjpjtjt

vnjpjtjt2#

这篇文章很旧了,但在这里发布以供将来参考。
例如,要访问observable1中的tensor_content,请执行以下操作

x = ea.Tensors("observable1")[0].tensor_proto.tensor_content[0]

x将包含您想要的二进制形式的值。

相关问题