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:
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.
Ok, werde ich das morgen versuchen und sehen, ob es hilft. – Tobias