2017-10-25 5 views
3

Ich habe ein Netzwerk in TensorFlow implementiert, das sehr lange dauert und daher profiliert werden muss, um zu sehen, welche Teile die lange Laufzeit verursachen.Tensorboard zeigt keine Laufzeit/Speicher für alle Operationen an

Um dies zu tun, folgen Sie den Anweisungen here, um Laufzeit und Speicherinformationen zu erfassen. Mein Code sieht so aus:

// define network 
loss = ... 
train_op = tf.train.AdamOptimizer().minimize(loss, global_step=global_step) 

// run forward and backward prop for one batch 
run_metadata = tf.RunMetadata() 
options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) 
_,loss,sum = sess.run([train_op,loss,sum], feed_dict=fd, options=options, run_metadata=run_metadata) 
writer.add_run_metadata(run_metadata, 'step_%d' % step) 

Ich kann dann "Sitzung läuft" in TensorBoard sehen. Doch sobald ich eine Sitzung laufen zu laden, die meisten Operationen in meinem Diagramm wiederum Orange, wie unten und keine Laufzeit oder Speicher gezeigt Informationen sind für sie zur Verfügung:

enter image description here

der Legende zufolge, sind diese Operationen " nicht benutzt ". Aber das kann nicht sein, da fast alles außer "Verlust" und "Opt" so dargestellt wird. Natürlich muss das gesamte Netzwerk verwendet werden, um den Verlust zu berechnen. Ich sehe also nicht wirklich, warum der Graph so dargestellt wird.

Ich benutze TF 1.3 auf einem Tesla K40c.

Antwort

1

Ich hatte das selbe Problem wie Sie, wenn Tensorboard nichts in meinem Sitzungslauf registrierte, außer den Gradienten- und Optimierungsoperationen.

Ich habe es behoben, indem ich meine Version von Tensorflow auf die Version 1.4 aktualisiert habe.

+0

Ok, werde ich das morgen versuchen und sehen, ob es hilft. – Tobias

0

Nicht sicher. Versuchen Sie, diese Zeile

writer.add_summary(_, step) 

nach

writer.add_run_metadata... 
+0

Warum sollte ich _ an die Funktion add_summary übergeben? Funktioniert das überhaupt? – Tobias

+0

_, verlust, summe = sess.run ([train_op, verlust, summe], feed_dict = fd, optionen = optionen, run_metadata = run_metadata) # von diesem: _ enthält sess.run (train_op, ..) –