Weil evaluate
die Verlustfunktion berechnet und die Metriken.
Sie haben keine von ihnen, bis Sie das Modell kompilieren. Sie sind Parameter an die Kompilierung-Methode:
model.compile(optimizer=..., loss=..., metrics=...)
Auf der anderen Seite, predict
nicht metrisch oder Verlust nicht bewerten, es geht nur um die Eingangsdaten durch das Modell und bekommt seinen Ausgang.
Sie brauchen den "Verlust" auch für das Training, so dass Sie nicht ohne Kompilieren trainieren können. Und Sie können ein Modell beliebig oft kompilieren und sogar die Parameter ändern.
Die Ausgänge und die Verlustfunktion:
Die Ausgänge sind abhängig von Modell auf es mit Gewichten definiert ist. Das ist automatisch und Sie können predict
von jedem Modell, auch ohne Training. Jedes Modell in Keras wird bereits mit Gewichten geboren (entweder von Ihnen initialisiert oder zufällig initialisiert)
Sie geben etwas ein, das Modell berechnet die Ausgabe. Am Ende von allem, das ist alles was zählt. Ein gutes Modell hat korrekte Gewichte und gibt Dinge korrekt aus.
Aber bevor Sie zu diesem Zweck kommen, muss Ihr Modell trainiert werden.
Jetzt nimmt die Verlustfunktion die aktuelle Ausgabe und vergleicht sie mit dem erwarteten/wahren Ergebnis. Es ist eine Funktion, die minimiert werden soll. Je geringer der Verlust, desto näher sind Ihre Ergebnisse dem erwarteten. Dies ist die Funktion, von der die Ableitungen genommen werden, so dass der Backpropagation-Algorithmus die Gewichte aktualisieren kann.
Die Verlustfunktion ist nicht für den endgültigen Zweck des Modells nützlich, aber sie ist für das Training erforderlich. Das ist wahrscheinlich der Grund, warum Sie Modelle ohne Verlustfunktionen haben können (und folglich gibt es keine Möglichkeit, sie zu bewerten).
Laden Sie das Modell mit 'load_weights()'? __HDF5__ Format wird verwendet, um die Gewichtungen streng zu speichern. Könnten Sie den Code trotzdem bereitstellen? Vielen Dank. –
Welche Keras Version verwendest du? –