Was ist der Unterschied zwischen Keras Modell.evaluate() und Modell.predict()?
Ich verwendet Keras biomedizinische Bild-Segmentierung segment Nervenzellen im Gehirn. Ich verwendet model.evaluate()
es gab mir Dice-Koeffizient: 0.916. Allerdings, wenn ich model.predict()
, dann eine Schleife durch die vorhergesagte Bilder durch die Berechnung des Dice-Koeffizienten, der Dice-Koeffizient ist 0,82. Warum sind diese beiden Werte unterschiedlich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem liegt in der Tatsache, dass jede Metrik in
Keras
ausgewertet in folgender Weise:batch
ein Metrik-Wert wird ausgewertet.k
Chargen ist gleich einem Mittelwert Ihrer Metrik über berechnetek
Chargen).Meisten der beliebtesten Metriken (wie
mse
,categorical_crossentropy
,mae
) etc. - als ein Mittel, der Verlust der Wert der einzelnen Beispiel - haben eine Eigenschaft, dass eine derartige Evaluierung endet mit einem richtigen Ergebnis. Aber im Falle der Dice - Koeffizient- ein Mittelwert von seinen Wert über alle Chargen ist nicht gleich dem tatsächlichen Wert berechnet auf einen ganzen Datensatz und alsmodel.evaluate()
verwendet solche Art von Berechnungen - dies ist die direkte Ursache des Problems.Den
model.evaluate
Funktion, prognostiziert der Ausgang für die angegebene Eingabe und berechnet dann die metrics-Funktion angegeben in dermodel.compile
und basiert aufy_true
undy_pred
und gibt den berechneten Wert als Ausgabe.Den
model.predict
nur zurück diey_pred
Also, wenn Sie
model.predict
und dann die Berechnung der Metriken selbst, die die berechnete Metrik-Wert soll sich um das gleiche wiemodel.evaluate
Zum Beispiel würde man mit
model.predict
stattmodel.evaluate
bei der Bewertung eines RNN/LSTM-basierte Modelle, bei denen der Ausgang muss gefüttert werden, die als input in der nächsten Zeit SchrittDen
keras.evaluate()
Funktion geben Sie den Verlust an Wert für jeden batch. Diekeras.predict()
Funktion werden Ihnen die aktuellen Prognosen für alle Proben in einem batch, einer für alle Chargen. Also, selbst wenn Sie die gleichen Daten, die Unterschiede werden da sein, weil der Wert der loss-Funktion werden Sie fast immer anders als die vorhergesagten Werte. Das sind zwei verschiedene Dinge.