从Tensorflow摘要中获取CSV

时间:2017-06-04 09:31:35

标签: python csv tensorflow

我有一些非常大的张量流量摘要。如果这些是使用tensorboard绘制的,我可以从中下载CSV文件。

然而,使用张量板绘制这些图片需要很长时间。我在the docs中发现有一种方法可以直接在Python中读取摘要。此方法为summary_iterator,可按如下方式使用:

import tensorflow as tf

for e in tf.train.summary_iterator(path to events file):
    print(e)

我可以使用此方法直接创建CSV文件吗?如果是这样,我该怎么做?这样可以节省很多时间。

1 个答案:

答案 0 :(得分:0)

这样做的一种可能方式是:

from tensorflow.python.summary import event_accumulator
import numpy as np
import pandas as pd
import sys

def create_csv(inpath, outpath):
    sg = {event_accumulator.COMPRESSED_HISTOGRAMS: 1,
          event_accumulator.IMAGES: 1,
          event_accumulator.AUDIO: 1,
          event_accumulator.SCALARS: 0,
          event_accumulator.HISTOGRAMS: 1}
    ea = event_accumulator.EventAccumulator(inpath, size_guidance=sg)
    ea.Reload()
    scalar_tags = ea.Tags()['scalars']
    df = pd.DataFrame(columns=scalar_tags)
    for tag in scalar_tags:
        events = ea.Scalars(tag)
        scalars = np.array(map(lambda x: x.value, events))
        df.loc[:, tag] = scalars
    df.to_csv(outpath)

if __name__ == '__main__':
    args = sys.argv
    inpath = args[1]
    outpath = args[2]
    create_csv(inpath, outpath)

请注意,此代码会将整个事件文件加载到内存中,因此最好在群集上运行它。有关sg的{​​{1}}参数的信息,请参阅this SO question

另一项改进可能不仅是存储每个标量的EventAccumulator,还包括value