![]() |
Class SparseCategoricalCrossentropy
Computes the crossentropy metric between the labels and predictions.
Aliases:
- Class
tf.compat.v1.keras.metrics.SparseCategoricalCrossentropy
- Class
tf.compat.v2.keras.metrics.SparseCategoricalCrossentropy
- Class
tf.compat.v2.metrics.SparseCategoricalCrossentropy
Use this crossentropy metric 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
metric.
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:
m = tf.keras.metrics.SparseCategoricalCrossentropy()
m.update_state(
[1, 2],
[[0.05, 0.95, 0], [0.1, 0.8, 0.1]])
# y_true = one_hot(y_true) = [[0, 1, 0], [0, 0, 1]]
# logits = log(y_pred)
# softmax = exp(logits) / sum(exp(logits), axis=-1)
# softmax = [[0.05, 0.95, EPSILON], [0.1, 0.8, 0.1]]
# xent = -sum(y * log(softmax), 1)
# log(softmax) = [[-2.9957, -0.0513, -16.1181], [-2.3026, -0.2231, -2.3026]]
# y_true * log(softmax) = [[0, -0.0513, 0], [0, 0, -2.3026]]
# xent = [0.0513, 2.3026]
# Reduced xent = (0.0513 + 2.3026) / 2
print('Final result: ', m.result().numpy()) # Final result: 1.176
Usage with tf.keras API:
model = tf.keras.Model(inputs, outputs)
model.compile(
'sgd',
loss='mse',
metrics=[tf.keras.metrics.SparseCategoricalCrossentropy()])
Args:
name
: (Optional) string name of the metric instance.dtype
: (Optional) data type of the metric result.from_logits
: (Optional ) Whethery_pred
is expected to be a logits tensor. By default, we assume thaty_pred
encodes a probability distribution.axis
: (Optional) Defaults to -1. The dimension along which the metric is computed.
__init__
__init__(
name='sparse_categorical_crossentropy',
dtype=None,
from_logits=False,
axis=-1
)
Creates a MeanMetricWrapper
instance.
Args:
fn
: The metric function to wrap, with signaturefn(y_true, y_pred, **kwargs)
.name
: (Optional) string name of the metric instance.dtype
: (Optional) data type of the metric result.**kwargs
: The keyword arguments that are passed on tofn
.
__new__
__new__(
cls,
*args,
**kwargs
)
Create and return a new object. See help(type) for accurate signature.
Methods
tf.keras.metrics.SparseCategoricalCrossentropy.reset_states
reset_states()
Resets all of the metric state variables.
This function is called between epochs/steps, when a metric is evaluated during training.
tf.keras.metrics.SparseCategoricalCrossentropy.result
result()
Computes and returns the metric value tensor.
Result computation is an idempotent operation that simply calculates the metric value using the state variables.
tf.keras.metrics.SparseCategoricalCrossentropy.update_state
update_state(
y_true,
y_pred,
sample_weight=None
)
Accumulates metric statistics.
y_true
and y_pred
should have the same shape.
Args:
y_true
: The ground truth values.y_pred
: The predicted values.sample_weight
: Optional weighting of each example. Defaults to 1. Can be aTensor
whose rank is either 0, or the same rank asy_true
, and must be broadcastable toy_true
.
Returns:
Update op.