2015-12-23 25 views
8

Ho un grafico Tensorflow piuttosto complicato che vorrei visualizzare per scopi di ottimizzazione. C'è una funzione che posso chiamare che salverà semplicemente il grafico per la visualizzazione in Tensorboard senza dover annotare le variabili?Salva grafico Tensorflow per la visualizzazione in Tensorboard senza operazioni di riepilogo

ho provato questo:

merged = tf.merge_all_summaries() 
writer = tf.train.SummaryWriter("/Users/Name/Desktop/tf_logs", session.graph_def) 

Ma nessuna uscita è stata prodotta. Questo sta usando la ruota 0.6.

questo sembra essere correlato: Graph visualisaton is not showing in tensorboard for seq2seq model

risposta

12

Per l'efficienza, i tf.train.SummaryWriter log in modo asincrono su disco. Per garantire che il grafico venga visualizzato nel registro, è necessario chiamare close() o flush() sul writer prima che il programma venga chiuso.

+0

'tf.summary.FileWriter' per le versioni recenti di TF – Conchylicultor

14

È inoltre possibile scaricare il grafico come un protobuf GraphDef e caricarlo direttamente in TensorBoard. Puoi farlo senza avviare una sessione o eseguire il modello.

## ... create graph ... 
>>> graph_def = tf.get_default_graph().as_graph_def() 
>>> graphpb_txt = str(a.graph.as_graph_def()) 
>>> with open('graphpb.txt', 'w') as f: f.write(graphpb_txt) 

In questo modo verrà generato un file simile a questo, in base alle specifiche del modello.

node { 
    name: "W" 
    op: "Const" 
    attr { 
    key: "dtype" 
    value { 
     type: DT_FLOAT 
    } 
    } 
... 
version 1 

In TensorBoard è quindi possibile utilizzare il pulsante "Carica" ​​per caricarlo dal disco.

+0

Impressionante! Grazie. – dmansfield

+1

dove si trova questo pulsante "Carica"? Non ho visto nessuno – avocado

+0

Non c'è il pulsante "Carica" ​​ –

3

Per tutta chiarezza, questo è come ho usato il metodo .flush() e risolto il problema:

Inizializzare lo scrittore con:

writer = tf.train.SummaryWriter("/home/rob/Dropbox/ConvNets/tf/log_tb", sess.graph_def) 

e utilizzare lo scrittore con:

writer.add_summary(summary_str, i) 
    writer.flush() 
5

Questo ha funzionato per me:

graph = tf.Graph() 
with graph.as_default(): 
    ... build graph (without annotations) ... 
writer = tf.summary.FileWriter(logdir='logdir', graph=graph) 
writer.flush() 

Il grafico viene caricato automaticamente all'avvio del tensore con "--logdir = logdir /". Nessun pulsante "upload" necessario.

+0

Grazie a y g (utente 5656195) per aver corretto l'errore "FileWrite" invece di "FileWriter". 3 revisori hanno respinto questa modifica dicendo "intendeva rivolgersi all'autore" (presumibilmente perché si mette un punto interrogativo alla fine della spiegazione di modifica). Pazzo. –

Problemi correlati