1

Ich benutzte Keras biomedizinische Bildsegmentierung, um Gehirnneuronen zu segmentieren. Ich habe model.evaluate() es gab mir Würfel Coef: 0.916, jedoch, wenn ich Model.Predict dann Loop durch die vorhergesagten Bilder durch die Berechnung der Würfel Coef, der Würfel Coef ist 0.82. Irgendeine Idee?Unterschied zwischen Keras Model.Evaluate() und Model.Predict()

Dank

+0

Bitte teilen Sie mehr Details über Ihre Daten, Ihren Code und Ihren Zug/Validieren/Test Split. – petezurich

Antwort

0

Die keras.evaluate() Funktion gibt Ihnen die Verlustwert für jede Charge. Die Funktion keras.predict() gibt Ihnen die tatsächlichen Vorhersagen für alle Proben in einer Charge für alle Chargen. Selbst wenn Sie dieselben Daten verwenden, sind die Unterschiede vorhanden, da der Wert einer Verlustfunktion sich fast immer von den vorhergesagten Werten unterscheidet. Dies sind zwei verschiedene Dinge.

2

Das Problem liegt in der Tatsache, dass jede Metrik in Keras in einer folgenden Art und Weise ausgewertet:

  1. Für jeden batch ein metrischer Wert bewertet wird.
  2. Ein aktueller Wert des Verlusts (nach k Chargen entspricht einem Mittelwert Ihrer Metrik über berechnete k Chargen).
  3. Das Endergebnis wird als Mittelwert aller Verluste erhalten, die für alle Chargen berechnet wurden.

Die meisten der beliebtesten Metriken (wie mse, categorical_crossentropy, mae) usw. - als Mittelwert der Verlustwert jedes Beispiels - eine Eigenschaft, die eine solche Bewertung mit einem richtigen Ergebnis endet. Aber im Fall von Würfelkoeffizient - ein Mittelwert seines Wertes über alle Chargen hinweg ist nicht gleich dem tatsächlichen Wert, der für ein ganzes Dataset berechnet wurde und model.evaluate() eine solche Berechnungsweise verwendet - dies ist die direkte Ursache für Ihr Problem.

Verwandte Themen