2016-05-18 22 views
14

Ho eseguito diverse sessioni di allenamento con diversi grafici in TensorFlow. I riepiloghi che ho creato mostrano risultati interessanti nella formazione e nella validazione. Ora, vorrei prendere i dati che ho salvato nei registri di riepilogo e svolgere alcune analisi statistiche e in generale la trama e guardare i dati di riepilogo in modi diversi. Esiste un modo per accedere facilmente a questi dati?TensorFlow - Importazione di dati da un file TFEvent di TensorBoard?

In particolare, c'è qualche modo integrato per leggere un record TFEvent in Python?

Se non c'è un modo semplice per farlo, TensorFlow states that all its file formats are protobuf files. Dalla mia comprensione di protobufs (che è limitato), penso che sarei in grado di estrarre questi dati se ho le specifiche del protocollo TFEvent. C'è un modo semplice per ottenere questo? Grazie mille.

risposta

12

Come Fabrizio says, TensorBoard è un ottimo strumento per visualizzare il contenuto dei registri di riepilogo. Tuttavia, se si desidera eseguire un'analisi personalizzata, è possibile utilizzare tf.train.summary_iterator() funzione per un ciclo su tutti i tf.Event e tf.Summary buffer di protocollo nel log:

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

Questo posto ha alcune funzioni di supporto utili https://programtalk.com/python-examples/tensorflow.train.summary_iterator/ –

9

Si può semplicemente utilizzare:

tensorboard --inspect --event_file=myevents.out 

o se si desidera filtrare un sottoinsieme specifico di eventi del grafico:

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

Se si vuole creare qualcosa di più personalizzato è possibile scavare in il

/tensorflow/python/summary/event_file_inspector.py 

per comprendere come analizzare i file di eventi.

+0

Quale versione di tensorflow fa questo lavoro con? Sto usando '0.8'. Per me, '--logdir' è sempre richiesto e nonostante il passaggio di questi altri parametri, sembra che TensorBoard esegua come al solito ignorando quei parametri. Inoltre, '--help' non mostra nessuno di questi parametri. Inoltre, giusto per assicurarmi che non mi manchi qualcosa, è questo che dovresti stampare qualcosa sullo schermo del terminale? O cambiare ciò che è mostrato sulla pagina TensorBoard? O qualcos'altro? Grazie! – golmschenk

+0

Seguendo questo esempio un po 'più avanti, ho trovato la classe 'EventAccumulator'. Che al momento del caricamento del file può fornire tutti i dettagli dei valori di riepilogo. Aggiornerò la tua risposta con maggiori dettagli – golmschenk

+0

infatti questi parametri sono disponibili nella punta di tensorflow. – fabrizioM

5

È possibile utilizzare lo script serialize_tensorboard, che si terrà in un logdir e scrivere tutti i dati in formato json.

È inoltre possibile utilizzare uno EventAccumulator per una comoda API Python (questa è la stessa API utilizzata da TensorBoard).

+3

A partire dalla versione Tensorboard 1.1, lo script serialize_tensorboard non è più disponibile. – shark8me

10

Per leggere un TFEvent è possibile ottenere un iteratore Python che fornisce i buffer del protocollo eventi. più

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

informazioni: summary_iterator

Problemi correlati