![]() |
Class SparseCategoricalCrossentropy
Computes the crossentropy loss between the labels and predictions.
Aliases:
- Class
tf.compat.v1.keras.losses.SparseCategoricalCrossentropy
- Class
tf.compat.v2.keras.losses.SparseCategoricalCrossentropy
- Class
tf.compat.v2.losses.SparseCategoricalCrossentropy
Use this crossentropy loss function when there are two or more label classes.
We expect labels to be provided as integers. If you want to provide labels
using one-hot
representation, please use CategoricalCrossentropy
loss.
There should be # classes
floating point values per feature for y_pred
and a single floating point value per feature for y_true
.
In the snippet below, there is a single floating point value per example for
y_true
and # classes
floating pointing values per example for y_pred
.
The shape of y_true
is [batch_size]
and the shape of y_pred
is
[batch_size, num_classes]
.
Usage:
cce = tf.keras.losses.SparseCategoricalCrossentropy()
loss = cce(
tf.convert_to_tensor([0, 1, 2]),
tf.convert_to_tensor([[.9, .05, .05], [.5, .89, .6], [.05, .01, .94]]))
print('Loss: ', loss.numpy()) # Loss: 0.3239
Usage with the compile
API:
model = tf.keras.Model(inputs, outputs)
model.compile('sgd', loss=tf.keras.losses.SparseCategoricalCrossentropy())
Args:
from_logits
: Whethery_pred
is expected to be a logits tensor. By default, we assume thaty_pred
encodes a probability distribution. Note: Using from_logits=True may be more numerically stable.reduction
: (Optional) Type oftf.keras.losses.Reduction
to apply to loss. Default value isAUTO
.AUTO
indicates that the reduction option will be determined by the usage context. For almost all cases this defaults toSUM_OVER_BATCH_SIZE
. When used withtf.distribute.Strategy
, outside of built-in training loops such astf.keras
compile
andfit
, usingAUTO
orSUM_OVER_BATCH_SIZE
will raise an error. Please see https://www.tensorflow.org/alpha/tutorials/distribute/training_loops for more details on this.name
: Optional name for the op.
__init__
__init__(
from_logits=False,
reduction=losses_utils.ReductionV2.AUTO,
name='sparse_categorical_crossentropy'
)
Initialize self. See help(type(self)) for accurate signature.
Methods
tf.keras.losses.SparseCategoricalCrossentropy.__call__
__call__(
y_true,
y_pred,
sample_weight=None
)
Invokes the Loss
instance.
Args:
y_true
: Ground truth values. shape =[batch_size, d0, .. dN]
y_pred
: The predicted values. shape =[batch_size, d0, .. dN]
sample_weight
: Optionalsample_weight
acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. Ifsample_weight
is a tensor of size[batch_size]
, then the total loss for each sample of the batch is rescaled by the corresponding element in thesample_weight
vector. If the shape ofsample_weight
is[batch_size, d0, .. dN-1]
(or can be broadcasted to this shape), then each loss element ofy_pred
is scaled by the corresponding value ofsample_weight
. (Note ondN-1
: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns:
Weighted loss float Tensor
. If reduction
is NONE
, this has
shape [batch_size, d0, .. dN-1]
; otherwise, it is scalar. (Note dN-1
because all loss functions reduce by 1 dimension, usually axis=-1.)
Raises:
ValueError
: If the shape ofsample_weight
is invalid.
tf.keras.losses.SparseCategoricalCrossentropy.from_config
from_config(
cls,
config
)
Instantiates a Loss
from its config (output of get_config()
).
Args:
config
: Output ofget_config()
.
Returns:
A Loss
instance.
tf.keras.losses.SparseCategoricalCrossentropy.get_config
get_config()