2015-12-24 5 views
25

"zurücksetzen" Ich teste verschiedene Hyperparameter für ein CNN-Modell, das ich gebaut habe, aber ich habe ein kleines Ärgernis beim Betrachten der Zusammenfassungen in Tensorboard. Das Problem scheint zu sein, dass die Daten in aufeinanderfolgenden Läufen nur "hinzugefügt" werden, so dass die Funktionen zu einer seltsamen Überlagerung führen, wenn ich die Information nicht als "relativ", sondern als "relativ" betrachte. Siehe hier:Wie man Tensorboard Daten nach dem Töten Tensorflow Instanz

X Type: Step

X Type: Relative

Ich habe versucht tensorboard den Prozess zu töten und das Löschen der Protokolldateien, aber es scheint, es ist nicht genug.

Die Frage ist also, wie kann ich diese Informationen zurücksetzen?

Danke !!

+0

Es scheint seltsam, dass auch nach dem Löschen der Protokolldateien und Neustart der Web-App zeigt es immer noch die alten Daten. Vielleicht cacht der Browser? – fabrizioM

Antwort

12

Ok, aus irgendeinem Grunde es vorher nicht arbeiten, aber jetzt ist es tut:

Sie müssen ihren Prozess

Nach der Tötung des Prozess läuft fuser 6006/tcp -k zu frei Port 6006 Tensorboard Protokolldateien löschen und töten (wenn du in linux bist) und feuer spannboard wieder.

+1

Es scheint, dass Sie nur das alte Verzeichnis löschen (oder umbenennen) müssen, um es zu aktualisieren, obwohl es nicht bemerkt, bis die Anzahl der Sekunden, die Sie an --reload_interval übergeben haben, verstrichen ist. – golvok

19

Hinweis: Die von Ihnen gepostete Lösung (Löschen der Protokolldateien von TensorBoard und Beenden des Prozesses) funktioniert, wird aber nicht bevorzugt, da sie historische Informationen über Ihr Training zerstört.

Stattdessen können Sie jeden neuen Trainingsjob in ein neues Unterverzeichnis (Ihres obersten Protokollverzeichnisses) schreiben lassen. Dann betrachtet TensorBoard jeden Job als neuen "Lauf" und erstellt eine schöne Vergleichsansicht, so dass Sie sehen können, wie sich das Training zwischen den Iterationen Ihres Modells unterscheidet. siehe

Ein Beispiel: https://www.tensorflow.org/tensorboard/

+3

In der Tat. Was du beschreibst, ist eine tödliche Eigenschaft von Tensorflow, die ich oft benutzt habe. Aber manchmal müssen Sie nur wiederholt überprüfen, ob sich alles wie erwartet verhält. Deshalb muss ich alles löschen und von vorne anfangen – mathetes

+3

Der Link ist kaputt :( – mjaskowski

6

Ja, ich glaube letztlich dieser Aspekt positiv ist.
Als Beispiel automatisieren ich neue Lauf in meinem Skript Protokolle über datetime:

from datetime import datetime 
now = datetime.now() 
logdir = "tf_logs/.../" + now.strftime("%Y%m%d-%H%M%S") + "/" 

Dann beim Laufen TensorBoard Sie die verschiedenen Läufe auf und ab TensorBoard in das übergeordnete Verzeichnis lief bereitgestellt klicken.

Wenn Sie wissen Sie einem vorhergehenden Lauf ist es egal, und es wollen Ihr Leben aus, dann ja, müssen Sie die Ereignisdateien und ertragen die ungewöhnlich langen Prozess des Tötens und Neustarten TensorBoard entfernen.

3

Ich habe gerade die Lösung für dieses Problem gefunden. Legen Sie einfach jede Events.out-Datei in einem separaten Ordner in Ihrem Protokollverzeichnis ab. Und Sie erhalten eine schöne Visualisierung in Tensorboard mit jedem Lauf in einer anderen Farbe.

0

Fügen Sie Ihrem Code das folgende Snippet hinzu, das Ihr Tensorboard automatisch zurücksetzen sollte.

if tf.gfile.Exists(dirpath): 
    tf.gfile.DeleteRecursively(dirpath) 

Dadurch werden die vorherigen Protokolle gelöscht.

+0

Dies funktioniert nicht vollständig - Sie müssen auch herunterfahren und TB jedes Mal neu starten. – Novak

0

Dadurch wird das Protokollverzeichnis automatisch gelöscht.

import shutil 

shutil.rmtree('log_dir', ignore_errors=True) 
+0

Bitte beachten Sie einige Erklärungen über was diese Funktion macht und warum Sie denken, das ist eine richtige Lösung, denken Sie auch daran, die Formatierung des Codes zu verwenden ;-) – Fabien

0

Ich hatte ein ähnliches Problem, aber mit einer Verdoppelung der Rechen Graphen: sie haben in tensorboard nur hinzugefügt, wenn ich

writer.add_graph(graph=sess.graph) 

In meinem Fall genannt, es nicht über Logfiles wurde aber über Jupyter Notebook Kontext.

habe ich herausgefunden, dass nach mehreren Läufen einer Jupyter Zelle mit einer Graph Definition hat der Graph nicht zurückgesetzt, sondern erscheinen als Duplikat im Rahmen, so dass ich hinzugefügt

tf.reset_default_graph() 

vor Beginn des Gebäudes ein Computergraph.

Ich hoffe, es wird helfen.