2015-12-23 9 views
8

Ich habe eine ziemlich komplizierte Tensorflow-Grafik, die ich zu Optimierungszwecken visualisieren möchte. Gibt es eine Funktion, die ich aufrufen kann, die einfach das Diagramm für die Anzeige im Tensorboard speichert, ohne Variablen zu kommentieren?Tensorflow-Grafik zum Anzeigen in Tensorboard ohne Zusammenfassungsoperationen speichern

Ich versuchte dies:

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

aber keine Ausgabe produziert wurde. Dies verwendet das Rad 0.6.

Dies scheint verwandt zu sein: Graph visualisaton is not showing in tensorboard for seq2seq model

Antwort

12

Für Effizienz, die tf.train.SummaryWriter Protokolle auf die Festplatte asynchron. Um sicherzustellen, dass der Graph im Protokoll angezeigt wird, müssen Sie vor dem Beenden des Programms den Writer close() oder aufrufen.

+0

'tf.summary.FileWriter' für aktuelle Versionen von TF – Conchylicultor

14

Sie können das Diagramm auch als GraphDef-Protobuf ausgeben und direkt in TensorBoard laden. Sie können dies tun, ohne eine Sitzung zu starten oder das Modell auszuführen.

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

Dies wird eine Datei ausgeben, die in etwa so aussieht, abhängig von den Besonderheiten Ihres Modells.

In TensorBoard können Sie dann die Schaltfläche "Upload" verwenden, um es von der Festplatte zu laden.

+0

Super! Vielen Dank. – dmansfield

+1

Wo ist diese Schaltfläche "Hochladen"? Ich habe keine gesehen – avocado

+0

Es gibt keine Schaltfläche 'Upload' –

3

Für alle Klarheit, das ist, wie ich die .flush() Methode verwendet und das Problem gelöst:

mit dem Schriftsteller initialisieren:

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

und den Schriftsteller verwenden mit:

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

Dies funktionierte für mich:

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

Das Diagramm wird automatisch geladen, wenn das Tensorboard mit "--logdir = logdir /" gestartet wird. Kein "Upload" Button benötigt.

+0

Danke yg (user 5656195) für die Korrektur des Tippfehlers "FileWrite" anstelle von "FileWriter". 3 Rezensenten lehnten diese Änderung ab, indem sie sagten "beabsichtigte, den Autor anzusprechen" (vermutlich, weil Sie ein Fragezeichen am Ende der Bearbeitungserklärung setzen). Verrückt. –