+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Tensorflow 2在tfevents文件中的摘要处理不一致

发布于2021-03-02 15:36     阅读(95)     评论(0)     点赞(29)     收藏(5)


0

1

2

3

4

5

如何以编程方式从TF2中的tfevents文件中检索直方图摘要?

似乎在TF1和TF2之间发生了变化,但是,对于TF2的keras版本,它仍然有效:

如果您遵循https://www.tensorflow.org/tensorboard/get_started#using_tensorboard_with_keras_modelfit来使用tensorboard回调,然后使用EventAccumulator在keras中训练MNIST模型:

from tensorboard.backend.event_processing.event_accumulator import EventAccumulator, HISTOGRAMS
acc = EventAccumulator(path_to_event_file, size_guidance={HISTOGRAMS: 10})
acc.Reload()
acc.Tags()

您将获得带有以下标签的tfevents文件内容:

{'images': [],
 'audio': [],
 'histograms': ['dense_4/kernel_0',
  'dense_4/bias_0',
  'dense_5/kernel_0',
  'dense_5/bias_0'],
 'scalars': ['epoch_loss', 'epoch_accuracy'],
 'distributions': ['dense_4/kernel_0',
  'dense_4/bias_0',
  'dense_5/kernel_0',
  'dense_5/bias_0'],
 'tensors': ['keras', 'batch_2'],
 'graph': True,
 'meta_graph': False,
 'run_metadata': []}

在这种情况下,可以从EventAccumulator中提取直方图和标量。

但是,尝试在没有回调/ keras的情况下进行以下测试:

writer = tf.summary.create_file_writer(logdir)

with writer.as_default():
    for i in range(100):
        tf.summary.histogram('hist', model.weights[0], step=i)
        tf.summary.scalar('scal', 2, step=i)
        writer.flush()

这将产生一个tfevents文件,其内容没有直方图或标量,而只有张量:

{'images': [],
 'audio': [],
 'histograms': [],
 'scalars': [],
 'distributions': [],
 'tensors': ['hist', 'scal'],
 'graph': False,
 'meta_graph': False,
 'run_metadata': []}

似乎与直方图名称相关的张量不足以检索整个直方图: [tf.make_ndarray(t) for _, _, t in acc.Tensors('hist')] 这似乎仅返回bin的边缘,但不返回bin的计数。我不清楚如何检索它们。

奇怪的是,Tensorboard确实正确显示了直方图。我想知道为什么他们将tf.summary功能更改为不再存储scalarsandhistograms属性,而是将其保留在keras实现中。

这里还提到了此问题,但仅针对标量:TensorFlow摘要在示例中以Tensor的形式将标量写入事件日志


解决方案


暂无回答

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/869890/5dbdec4e962d9df3d908/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)