2016-05-10 7 views
20

Gibt es eine Möglichkeit, sowohl die Trainingsverluste als auch die Validierungsverluste auf der gleichen Grafik grafisch darzustellen?TensorBoard - Plot Training und Validierung Verluste auf der gleichen Grafik?

Es ist einfach, zwei separate Skalarzusammenfassungen für jede von ihnen einzeln zu haben, aber dies bringt sie in separate Graphen. Wenn beide in der gleichen Grafik angezeigt werden, ist es viel einfacher, die Lücke zwischen ihnen zu sehen, und ob sie aufgrund von Überanpassungen zu divergieren beginnen oder nicht.

Gibt es eine eingebaute Möglichkeit, dies zu tun? Wenn nicht, ein Arbeitsweg? Vielen Dank!

+0

Zu dieser Zeit (5/24) gibt es keinen offiziell unterstützten Weg, dies zu tun. Aber wir suchen nach einem allgemeineren System zum Binden verschiedener Datenquellen, um es zusammen zu visualisieren, und dies wird von diesem System unterstützt. – dandelion

+0

@dandelion ist dies zur Zeit noch nicht unterstützt? – reese0106

+0

[Hier ist eine Lösung mit Keras] (https://stackoverflow.com/a/48393723/3609568) – user66081

Antwort

13

Die Umgehung, die ich gemacht habe, ist, zwei SummaryWriter mit verschiedenen Protokollverzeichnissen für Trainingssatz und Kreuzvalidierung zu verwenden. Und Sie werden etwas sehen:

enter image description here

+0

Vielen Dank! Ich hatte gedacht, dass dieser Ansatz funktionieren könnte, aber ich habe es noch nicht ausprobiert. Natürlich macht dies das Vergleichen von Läufen mit Validierungen mühsamer, aber zumindest ist es eine Option. Ich werde die Frage für den Moment offen lassen, aber hoffentlich können wir eine Lösung finden, die es lösen wird, ohne auch noch etwas aufzugeben. – golmschenk

+0

Sicher, warte auf deine guten Nachrichten :) BTW, wie für die Vergleiche zwischen Läufen und Validierungen, ich denke nicht, dass es ein Problem ist, da Sie sie nur speichern können "run1/train", "run2/train." "," run1/validation "usw. Und überprüfen Sie die Kurven, die Sie beim Vergleich sehen wollen. –

+0

Wie erhalten Sie die 2 Läufe auf der gleichen Grafik. als ich versuchte, 2 Zusammenfassungen mit verschiedenen Autoren, aber demselben Namen zu erstellen, bekam ich 'Loss' und' Loss_1' – michael

8

Anstatt die beiden Linien separat angezeigt wird, können Sie stattdessen zeichnen den Unterschied zwischen der Validierung und Training Verluste als seine eigene Skalar Zusammenfassung der Divergenz zu verfolgen.

Dies gibt nicht so viele Informationen zu einem einzelnen Diagramm (verglichen mit dem Hinzufügen von zwei Zusammenfassungen), aber es hilft, mehrere Durchläufe vergleichen zu können (und nicht mehrere Zusammenfassungen pro Durchlauf hinzuzufügen).

2

Tensorboard ist wirklich nettes Werkzeug, aber durch seine deklarative Natur kann es schwierig machen, es genau das zu tun, was Sie wollen.

Ich empfehle Ihnen den Kauf Losswise (https://losswise.com) zum Plotten und verfolgen von Verlustfunktionen als Alternative zu Tensorboard. Mit Losswise geben Sie genau das, was zusammen grafisch dargestellt werden sollen:

import losswise 

losswise.set_api_key("project api key") 
session = losswise.Session(tag='my_special_lstm', max_iter=10) 
loss_graph = session.graph('loss', kind='min') 

# train an iteration of your model... 
loss_graph.append(x, {'train_loss': train_loss, 'validation_loss': validation_loss}) 
# keep training model... 

session.done() 

Und Sie dann etwas, das wie folgt aussieht:

Training and test loss on the same graph

Beachten Sie, wie die Daten zu einem bestimmten Graphen zugeführt wird explizit über den loss_graph.append aufrufen, deren Daten dann im Dashboard Ihres Projekts angezeigt werden.

Darüber hinaus würde Losswise für das obige Beispiel automatisch eine Tabelle mit Spalten für min(training_loss) und min(validation_loss) erstellen, sodass Sie die zusammengefassten Statistiken in Ihren Experimenten problemlos vergleichen können. Sehr nützlich für den Vergleich von Ergebnissen über eine große Anzahl von Experimenten.

Verwandte Themen