TensorFlow-importer des données d'un fichier TensorBoard?

j'ai effectué plusieurs sessions de formation avec différents graphes dans TensorFlow. Les résumés j'ai configuré montrent des résultats intéressants dans la formation et la validation. Maintenant, j'aimerais prendre les données que j'ai enregistrées dans les journaux de synthèse et effectuer quelques analyses statistiques et en général tracer et regarder les données de synthèse de différentes façons. Est-il un moyen d'accéder facilement à ces données?

plus précisément, y a-t-il une manière construite pour lire un enregistrement TFEvent de retour dans Python?

Si il n'y a pas de moyen simple de le faire, TensorFlow déclare que tous ses formats de fichiers sont des fichiers protobuf. D'après ma compréhension de protobufs (qui est limitée), je pense que je serais en mesure d'extraire ces données si j'ai la spécification de protocole TFEvent. Y a-t-il un moyen facile de mettre la main dessus? Je vous remercie beaucoup.

23
demandé sur golmschenk 2016-05-18 18:48:30

5 réponses

Comme Fabrizio dit, TensorBoard est un excellent outil permettant de visualiser le contenu de votre récapitulatif de journaux. Cependant, si vous souhaitez effectuer une analyse personnalisée, vous pouvez utiliser tf.train.summary_iterator() fonction pour boucler tout le tf.Event et tf.Summary tampons de protocole dans le log:

for summary in tf.train.summary_iterator("/path/to/log/file"):
    # Perform custom processing in here.
18
répondu mrry 2017-05-23 12:18:13

pour lire un TFEvent, vous pouvez obtenir un itérateur Python qui fournit des tampons de protocole D'événement.

# 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)

plus d'info: summy_iterator

17
répondu Temak 2016-10-13 19:23:33

Vous pouvez simplement utiliser:

tensorboard --inspect --event_file=myevents.out

ou si vous souhaitez filtrer un sous-ensemble spécifique des événements du graphique:

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

Si vous voulez créer quelque chose de plus personnalisé, vous pouvez creuser dans le

/tensorflow/python/summary/event_file_inspector.py 

pour comprendre comment analyser les fichiers événement.

10
répondu fabrizioM 2016-05-18 17:07:02

Vous pouvez utiliser le script serialize_tensorboard, qui prendra un logdir et écrira toutes les données dans le format json.

vous pouvez aussi utiliser un accumulateur D'événements pour une API Python pratique (C'est la même API que TensorBoard utilise).

5
répondu dandelion 2016-05-24 10:55:56

Voici un exemple complet pour l'obtention de valeurs à partir d'un scalaire. Vous pouvez voir la spécification de message pour le message protobuf Event ici

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)
2
répondu Duane 2018-03-22 21:57:54