# SparseCategoricalCrosstentropy vs sparse_categorical_crossentropy

What is the difference between SparseCategoricalCrosstentropy and sparse_categorical_crossentropy ?

SparseCategoricalCrossentropy: Computes the crossentropy loss between the labels and predictions.

sparse_categorical_crossentropy: Computes the sparse categorical crossentropy loss.

But I am still not sure. Any loss will always be calculates between labels and predictions. SO how are these two different ?

SparseCategoricalCrossentropy is a class. So you have to define a object first then you can compute the loss using it.

scce = tf.keras.losses.SparseCategoricalCrossentropy()
scce(y_true, y_pred).numpy()


While sparse_categorical_crossentropy is merely a function which can be directly used to compute cost.

loss = tf.keras.losses.sparse_categorical_crossentropy(y_true, y_pred)


If you are to pass the loss to a Sequential API then you must pass the object ,not the function.

model.compile('sgd', loss=tf.keras.losses.SparseCategoricalCrossentropy())

• so value of scce(y_true, y_pred).numpy() should be equal to tf.keras.losses.sparse_categorical_crossentropy(y_true, y_pred), right ? – Hitesh Somani Jul 10 at 8:04
• yes it will be same – SrJ Jul 10 at 8:34

SparseCategoricalCrossentropy is a class while sparse_categorical_crossentropy is a function.

SparseCategoricalCrossentropy -> You create an instance of this class and then pass the true values and predicted values.

sparse_categorical_crossentropy -> You pass the true and predicted values just as you would do with any other function.