TensorFlow - Импорт данных из файла TFEvent TensorBoard?

Я провел несколько тренировок с разными графиками в TensorFlow. Резюме, которые я создал, показывают интересные результаты в обучении и валидации. Теперь я хотел бы взять данные, которые я сохранил в сводных журналах, и выполнить некоторый статистический анализ и в общем сюжете и посмотреть сводные данные по-разному. Существует ли какой-либо существующий способ доступа к этим данным?

Более конкретно, есть ли встроенный способ чтения записи TFEvent на Python?

Если нет простого способа сделать это, TensorFlow заявляет, что все его форматы файлов являются файлами protobuf . Из моего понимания protobufs (который ограничен), я думаю, что смог бы извлечь эти данные, если у меня есть спецификация протокола TFEvent. Есть ли простой способ получить это? Спасибо много.

python,tensorflow,tensorboard,

17

Ответов: 5


14 голосов принято

Как говорит Фабрицио , TensorBoard - отличный инструмент для визуализации содержимого ваших сводных журналов. Однако, если вы хотите выполнить собственный анализ, вы можете использовать tf.train.summary_iterator()функцию для циклического перебора всех буферов протокола tf.Eventи tf.Summaryпротоколов в журнале:

for summary in tf.train.summary_iterator("/path/to/log/file"):
    # Perform custom processing in here.

15

Чтобы прочитать TFEvent, вы можете получить итератор Python, который дает буферы протокола событий.

# This example supposes that the events file contains summaries with a
# summary value tag 'loss'.  These could have been added by calling
# `add_summary()`, passing the output of a scalar summary op created with
# with: `tf.scalar_summary(['loss'], loss_tensor)`.
for e in tf.train.summary_iterator(path_to_events_file):
    for v in e.summary.value:
        if v.tag == 'loss' or v.tag == 'accuracy':
            print(v.simple_value)

больше информации: summary_iterator


10

Вы можете просто использовать:

tensorboard --inspect --event_file=myevents.out

или если вы хотите отфильтровать определенное подмножество событий графика:

tensorboard --inspect --event_file=myevents.out --tag=loss

Если вы хотите создать что-то более обычное, вы можете

/tensorflow/python/summary/event_file_inspector.py 

чтобы понять, как разбирать файлы событий.


Вы можете использовать скрипт serialize_tensorboard , который будет принимать logdir и выписать все данные в формате json.

Вы также можете использовать EventAccumulator для удобного Python API (это тот же API, что и TensorBoard).


0

Вот полный пример получения значений из скаляра. Вы можете увидеть спецификацию сообщения для сообщения protobuf события здесь

import tensorflow as tf


for event in tf.train.summary_iterator('runs/easy_name/events.out.tfevents.1521590363.DESKTOP-43A62TM'):
    for value in event.summary.value:
        print(value.tag)
        if value.HasField('simple_value'):
            print(value.simple_value)
питон, tensorflow, tensorboard,