Was ist der Unterschied zwischen categorical_accuracy
und sparse_categorical_accuracy
in Keras? Es gibt keinen Hinweis in der Dokumentation für diese Metriken , und als ich Dr. Google fragte, fand ich auch keine Antworten dafür.
Den Quellcode finden Sie hier :
def categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.argmax(y_true, axis=-1),
K.argmax(y_pred, axis=-1)),
K.floatx())
def sparse_categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.max(y_true, axis=-1),
K.cast(K.argmax(y_pred, axis=-1), K.floatx())),
K.floatx())
Betrachtet man die Quelle
def categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.argmax(y_true, axis=-1),
K.argmax(y_pred, axis=-1)),
K.floatx())
def sparse_categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.max(y_true, axis=-1),
K.cast(K.argmax(y_pred, axis=-1), K.floatx())),
K.floatx())
categorical_accuracy
prüft, ob der Index des maximalen wahren Werts gleich dem Index des maximalen vorhergesagten Werts ist.
sparse_categorical_accuracy
prüft, ob der maximale wahre Wert gleich dem Index des maximalen vorhergesagten Werts ist.
Aus Marcins Antwort über dem categorical_accuracy
entspricht einem one-hot
codierter Vektor für y_true
.
Also in categorical_accuracy
Sie müssen Ihr Ziel (y
) als one-hot-codierten Vektor angeben (z. B. bei 3 Klassen, wenn eine echte Klasse die zweite Klasse ist, sollte y
(0, 1, 0)
. Im sparse_categorical_accuracy
Sie müssen nur eine Ganzzahl der wahren Klasse angeben (im Fall des vorherigen Beispiels wäre dies 1
als Klassenindizierung ist 0
-basierend).