Categorical Accuracy: It evaluates the index of the maximal true value is equal to the index of the maximal predicted value. you need to specify your target (y) as one-hot encoded vector (e.g. in case of 3 classes, when a true class is a second class, y should be (0, 1, 0).
For example:
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())
Sparse Categorical Accuracy: It evaluates the maximal true value is equal to the index of the maximal predicted value. You need should only provide an integer of the true class (in the case from the previous example - it would be 1 as classes indexing is 0-based).
For example:
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())
Hope this answer helps.