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

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

2 ответов


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

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

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

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

используя 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.

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