Как вы программно читаете файлы Tensorboard?

Как вы можете написать python script, чтобы читать файлы журнала Tensorboard, извлекать потери и точность и другие числовые данные без запуска GUI tensorboard --logdir=...?

Ответ 1

Вы можете использовать классы Penson TensorBoard или script для извлечения данных:

Как экспортировать данные с TensorBoard?

Если вы хотите экспортировать данные для визуализации в другом месте (например, iPython Notebook), это тоже возможно. Вы можете напрямую зависеть от базовых классов, которые TensorBoard использует для загрузки данных: python/summary/event_accumulator.py (для загрузки данных из одного прогона) или python/summary/event_multiplexer.py (для загрузки данных из нескольких прогонов и их организации). Эти классы загружают группы файлов событий, отбрасывают данные, "потерянные" из-за сбоев TensorFlow, и организуют данные по тегу.

В качестве другого варианта существует script (tensorboard/scripts/serialize_tensorboard.py), который будет загружать logdir, как это делает TensorBoard, но записывать все данные на диск как json вместо запуска сервера. Этот script настроен для создания "поддельных TensorBoard backends" для тестирования, поэтому он немного груб по краям.

Использование EventAccumulator:

In [1]: from tensorflow.python.summary import event_accumulator

In [2]: ea = event_accumulator.EventAccumulator('events.out.tfevents.x.ip-x-x-x-x',
   ...:  size_guidance={ # see below regarding this argument
   ...:      event_accumulator.COMPRESSED_HISTOGRAMS: 500,
   ...:      event_accumulator.IMAGES: 4,
   ...:      event_accumulator.AUDIO: 4,
   ...:      event_accumulator.SCALARS: 0,
   ...:      event_accumulator.HISTOGRAMS: 1,
   ...:  })

In [3]: ea.Reload() # loads events from file
Out[3]: <tensorflow.python.summary.event_accumulator.EventAccumulator at 0x7fdbe5ff59e8>

In [4]: ea.Tags()
Out[4]: 
{'audio': [],
 'compressedHistograms': [],
 'graph': True,
 'histograms': [],
 'images': [],
 'run_metadata': [],
 'scalars': ['Loss', 'Epsilon', 'Learning_rate']}

In [5]: ea.Scalars('Loss')
Out[5]: 
[ScalarEvent(wall_time=1481232633.080754, step=1, value=1.6365480422973633),
 ScalarEvent(wall_time=1481232633.2001867, step=2, value=1.2162202596664429),
 ScalarEvent(wall_time=1481232633.3877788, step=3, value=1.4660096168518066),
 ScalarEvent(wall_time=1481232633.5749283, step=4, value=1.2405034303665161),
 ScalarEvent(wall_time=1481232633.7419815, step=5, value=0.897326648235321),
 ...]

size_guidance:

size_guidance: Information on how much data the EventAccumulator should
  store in memory. The DEFAULT_SIZE_GUIDANCE tries not to store too much
  so as to avoid OOMing the client. The size_guidance should be a map
  from a `tagType` string to an integer representing the number of
  items to keep per tag for items of that `tagType`. If the size is 0,
  all events are stored.

Ответ 2

Чтобы завершить ответ user1501961, вы можете просто легко экспортировать список скаляров в файл csv с помощью pandas pd.DataFrame(ea.Scalars('Loss)).to_csv('Loss.csv')