Как программно читать файлы Tensorboard?
Как можно написать скрипт python для чтения файлов журналов Tensorboard, извлечения потерь и точности и других числовых данных, не запуская графический интерфейс 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: 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.