machine learning - examples - Keras-Diferencia entre categorical_accuracy y sparse_categorical_accuracy
tensorflow (2)
¿Cuál es la diferencia entre categorical_accuracy
y sparse_categorical_accuracy
en Keras? No hay ninguna pista en la documentación de estas métricas , y al preguntarle al Dr. Google, tampoco encontré respuestas para eso.
El código fuente se puede encontrar here :
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())
Mirando la source
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
verifica si el índice del valor verdadero máximo es igual al índice del valor máximo previsto.
sparse_categorical_accuracy
verifica si el valor verdadero máximo es igual al índice del valor máximo previsto.
De la respuesta de Marcin en la parte superior, la y_true
categorical_accuracy
corresponde con un vector codificado de un one-hot
para y_true
.
Por lo tanto, en categorical_accuracy
, debe especificar su objetivo ( y
) como un vector codificado en caliente (p. Ej., En el caso de 3 clases, cuando una clase verdadera es de segunda clase, y
debería ser (0, 1, 0)
. En sparse_categorical_accuracy
debe solo proporcione un entero de la clase verdadera (en el caso del ejemplo anterior, sería 1
ya que la indexación de las clases está basada en 0
).