71 votes

Keras - Différence entre catégorical_accuracy et sparse_categorical_accuracy

Quelle est la différence entre categorical_accuracy et sparse_categorical_accuracy à Keras? Il n'y a aucun indice dans la documentation de ces mesures , et en demandant au Dr Google, je n'ai pas trouvé de réponses pour cela non plus.

Le code source peut être trouvé ici :

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

89voto

Marcin Możejko Points 19602

Ainsi, dans categorical_accuracy vous devez spécifier votre cible ( y ) en tant que vecteur codé à chaud (par exemple, dans le cas de 3 classes, lorsqu'une vraie classe est de deuxième classe, y devrait être (0, 1, 0) . Dans sparse_categorical_accuracy vous devez seulement fournir un entier de la vraie classe (dans le cas de l'exemple précédent - ce serait 1 car l'indexation des classes est basée sur 0 ).

53voto

Matti Lyra Points 5370

En regardant 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 vérifie si l' index de la vraie valeur maximale est égale à l' indice de l'maximale de la valeur prédite.

sparse_categorical_accuracy vérifie si la vraie valeur maximale est égale à l' indice de l'maximale de la valeur prédite.

De Marcin la réponse ci-dessus à l' categorical_accuracy correspond à un one-hot codé vecteur pour y_true.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X