Tensorflow.SummaryWriterで書き出されるログファイルはtensorboardで開くことで中身を確認できる.しかし自分のプログラム内で自由に使いたい場合はログファイルを自前で扱えるような形で展開する必要がある.tensorboardではtensorflow.python.summary.event_accumulator.EventAccumulatorという関数を使っているようなので,これを流用すれば比較的簡単に取り出すことが可能.
parse_scalar.py
from tensorflow.python.summary.event_accumulator import EventAccumulator
import numpy as np
def scalar2arrays(scalarEvents):
"""
converts scalarEvent to set of numpy.array
"""
wall_times = []
steps = []
values = []
for event in scalarEvents:
wall_times.append(event.wall_time)
steps.append(event.step)
values.append(event.value)
return np.array(wall_times), np.array(steps), np.array(values)
accumulator = EventAccumulator('filename-of-event-file')
accumulator.Reload() # load event files
wall_times, steps, values = scalar2arrays(accumulator.Scalars('name-of-summary'))
lossをmatplotlibでプロットし直すことができるようなった.