2016-11-17 2 views
0

Ich benutze Keras w/Tensorflow Backend, um ein NN zu trainieren.Wie erhalten Sie Verlust und Modellausgabe auf einmal in Keras?

Ich verwende train_on_batch für Training, die den Verlust auf die gegebene Charge zurückgibt. Wie bekomme ich auch die Ausgabeklassifizierung für diesen Stapel? (Ich möchte einige Visualisierungen der Ausgabe machen)

Um dies zu tun, mache ich derzeit einen anderen Anruf an predict, um die Modellausgabe zu erhalten, aber das ist redundant, da train_on_batch den Eingangs-Batch "weiterleiten" bereits bestanden hat.

In Caffe, wenn ein Bild vorwärts weitergeleitet wird, bleiben die Zwischenschichtausgänge in net.blobs gespeichert, aber in Keras/Tensorflow scheint es, dass wenn wir eine Zwischenausgabe erhalten wollen, müssen wir das Berechnungsdiagramm für jedes neu ausführen Zwischenausgang soll auf die CPU zugreifen, wie beschrieben here. Gibt es eine Möglichkeit, auf viele/alle Zwischenebenen-Ausgänge zuzugreifen, ohne das Diagramm für jeden neu zu durchlaufen?

Ich habe nichts gegen eine Tensorflow-spezifische Problemumgehung.

Antwort

1

Wenn Sie die Funktion API verwenden, ist dies hübsch straight forward.

+0

Dies gibt die Zwischenausgabe zurück, gibt jedoch keine Verluste zurück und aktualisiert die Gewichtungen nicht. – MohamedEzz

0

Zusätzlich zur Antwort von @ MohamedEzz können Sie einen benutzerdefinierten Rückruf erstellen, der die während des Trainings erforderlichen Operationen ausführen kann. Sie haben Methoden, die Ihren Code onEpochEnd, onEpochStart, onTrainingEnd und so weiter ausführen ... Auf diese Weise können Sie den Stapel beibehalten.

Verwandte Themen