2017-06-04 21 views
1

私はいくつかの非常に大きなテンソルフローサマリーを持っています。これらがテンソルボードを使ってプロットされている場合、それらからCSVファイルをダウンロードできます。TensorflowサマリからCSVを取得

ただし、テンソルボードを使用してプロットすると非常に時間がかかります。 the docsに、Pythonで直接要約を読む方法があることがわかりました。この方法はsummary_iteratorで、次のように使用することができます。

import tensorflow as tf 

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

は私が直接、CSVファイルを作成するには、このメソッドを使用することはできますか?もしそうなら、どうしたらいいですか?これは多くの時間を節約するでしょう。それをやっての

答えて

0

1つの可能な方法は次のようになります:

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) 

注意してください、このコードは、メモリにクラスタ上でこれを実行するのは最高のイベント・ファイル全体をロードします。 EventAccumulatorsg引数については、this SO questionを参照してください。

各スカラーのvalueを格納するだけでなく、stepも格納することができます。

関連する問題