Logging Training und Validierungsverlust in Tensorboard

Ich versuche zu lernen, wie man Tensorflow und Tensorboard benutzt. Ich habe ein Testprojekt basierend auf demMNIST Neuronales Netz Tutorial.

n meinem Code konstruiere ich einen Knoten, der den Bruchteil der Ziffern in einem Datensatz berechnet, die korrekt klassifiziert sind, wie folg

correct = tf.nn.in_top_k(self._logits, labels, 1)
correct = tf.to_float(correct)
accuracy = tf.reduce_mean(correct)

Hier,self._logitsist der Inferenzteil des Graphen undlabels ist ein Platzhalter, der die richtigen Bezeichnungen enthält.

Jetzt möchte ich die Genauigkeit sowohl für den Trainingssatz als auch für den Validierungssatz während des Trainings bewerten. Ich kann dies tun, indem ich den Genauigkeitsknoten zweimal mit verschiedenen feed_dicts ausführe:

train_acc = tf.run(accuracy, feed_dict={images : training_set.images, labels : training_set.labels})
valid_acc = tf.run(accuracy, feed_dict={images : validation_set.images, labels : validation_set.labels})

Dies funktioniert wie vorgesehen. Ich kann die Werte ausdrucken, und ich kann sehen, dass anfangs beide Genauigkeiten zunehmen und schließlich die Validierungsgenauigkeit abflacht, während die Trainingsgenauigkeit weiter zunimmt.

Ich möchte jedoch auch Diagramme dieser Werte in tensorboard erhalten, und ich kann nicht herausfinden, wie dies getan wird. Wenn ich einfach ein @ hinzufüscalar_summary zuaccuracy, die protokollierten Werte unterscheiden nicht zwischen Trainingssatz und Validierungssatz.

Ich habe auch versucht, zwei identischeaccuracy -Knoten mit unterschiedlichen Namen, von denen einer auf dem Trainingssatz und einer auf dem Validierungssatz ausgeführt wird. Ich füge dann ein @ hinscalar_summary zu jedem dieser Knoten. Das gibt mir zwei Diagramme in Tensorboard, aber anstelle eines Diagramms, das die Genauigkeit des Trainingssatzes und eines der Genauigkeit des Validierungssatzes zeigt, zeigen beide identische Werte, die nicht mit den auf dem Terminal gedruckten Werten übereinstimmen.

Ich habe wahrscheinlich ein Missverständnis, wie ich dieses Problem lösen kann. Wie wird empfohlen, die Ausgabe eines einzelnen Knotens für verschiedene Eingaben separat zu protokollieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage