View source on GitHub
|
Computes the crossentropy metric between the labels and predictions.
tf.keras.metrics.CategoricalCrossentropy(
name='categorical_crossentropy', dtype=None, from_logits=False,
label_smoothing=0
)
This is the crossentropy metric class to be used when there are multiple
label classes (2 or more). Here we assume that labels are given as a one_hot
representation. eg., When labels values are [2, 0, 1],
y_true = [[0, 0, 1], [1, 0, 0], [0, 1, 0]].
m = tf.keras.metrics.CategoricalCrossentropy()
m.update_state([[0, 1, 0], [0, 0, 1]],
[[0.05, 0.95, 0], [0.1, 0.8, 0.1]])
# EPSILON = 1e-7, y = y_true, y` = y_pred
# y` = clip_ops.clip_by_value(output, EPSILON, 1. - EPSILON)
# y` = [[0.05, 0.95, EPSILON], [0.1, 0.8, 0.1]]
# xent = -sum(y * log(y'), axis = -1)
# = -((log 0.95), (log 0.1))
# = [0.051, 2.302]
# Reduced xent = (0.051 + 2.302) / 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.CategoricalCrossentropy()])
name: (Optional) string name of the metric instance.dtype: (Optional) data type of the metric result.from_logits: (Optional ) Whether y_pred is expected to be a logits tensor.
By default, we assume that y_pred encodes a probability distribution.label_smoothing: Float in [0, 1]. When > 0, label values are smoothed,
meaning the confidence on label values are relaxed. e.g.
label_smoothing=0.2 means that we will use a value of 0.1 for label
0 and 0.9 for label 1"fn: The metric function to wrap, with signature
fn(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 to fn.reset_statesreset_states()
Resets all of the metric state variables.
This function is called between epochs/steps, when a metric is evaluated during training.
resultresult()
Computes and returns the metric value tensor.
Result computation is an idempotent operation that simply calculates the metric value using the state variables.
update_stateupdate_state(
y_true, y_pred, sample_weight=None
)
Accumulates metric statistics.
y_true and y_pred should have the same shape.
y_true: The ground truth values.y_pred: The predicted values.sample_weight: Optional weighting of each example. Defaults to 1. Can be
a Tensor whose rank is either 0, or the same rank as y_true,
and must be broadcastable to y_true.Update op.