tutorial examples machine-learning neural-network deep-learning classification keras

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 ).