Как вы можете написать python script, чтобы читать файлы журнала Tensorboard, извлекать потери и точность и другие числовые данные без запуска GUI tensorboard --logdir=...
?
Как вы программно читаете файлы Tensorboard?
Ответ 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: 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')