tf.keras.losses.CategoricalCrossentropy
Stay organized with collections
Save and categorize content based on your preferences.
Computes the crossentropy loss between the labels and predictions.
Inherits From: Loss
tf.keras.losses.CategoricalCrossentropy(
from_logits=False,
label_smoothing=0.0,
axis=-1,
reduction='sum_over_batch_size',
name='categorical_crossentropy'
)
Used in the notebooks
Used in the guide |
Used in the tutorials |
|
|
Use this crossentropy loss function when there are two or more label
classes. We expect labels to be provided in a one_hot
representation. If
you want to provide labels as integers, please use
SparseCategoricalCrossentropy
loss. There should be num_classes
floating
point values per feature, i.e., the shape of both y_pred
and y_true
are
[batch_size, num_classes]
.
Args |
from_logits
|
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. For example, if
0.1 , use 0.1 / num_classes for non-target labels and
0.9 + 0.1 / num_classes for target labels.
|
axis
|
The axis along which to compute crossentropy (the features
axis). Defaults to -1 .
|
reduction
|
Type of reduction to apply to the loss. In almost all cases
this should be "sum_over_batch_size" .
Supported options are "sum" , "sum_over_batch_size" or None .
|
name
|
Optional name for the loss instance.
|
Examples:
Standalone usage:
y_true = [[0, 1, 0], [0, 0, 1]]
y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]]
# Using 'auto'/'sum_over_batch_size' reduction type.
cce = keras.losses.CategoricalCrossentropy()
cce(y_true, y_pred)
1.177
# Calling with 'sample_weight'.
cce(y_true, y_pred, sample_weight=np.array([0.3, 0.7]))
0.814
# Using 'sum' reduction type.
cce = keras.losses.CategoricalCrossentropy(
reduction="sum")
cce(y_true, y_pred)
2.354
# Using 'none' reduction type.
cce = keras.losses.CategoricalCrossentropy(
reduction=None)
cce(y_true, y_pred)
array([0.0513, 2.303], dtype=float32)
Usage with the compile()
API:
model.compile(optimizer='sgd',
loss=keras.losses.CategoricalCrossentropy())
Methods
call
View source
call(
y_true, y_pred
)
from_config
View source
@classmethod
from_config(
config
)
get_config
View source
get_config()
__call__
View source
__call__(
y_true, y_pred, sample_weight=None
)
Call self as a function.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Some content is licensed under the numpy license.
Last updated 2024-06-07 UTC.
[null,null,["Last updated 2024-06-07 UTC."],[],[],null,["# tf.keras.losses.CategoricalCrossentropy\n\n\u003cbr /\u003e\n\n|---------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/losses/losses.py#L673-L760) |\n\nComputes the crossentropy loss between the labels and predictions.\n\nInherits From: [`Loss`](../../../tf/keras/Loss) \n\n tf.keras.losses.CategoricalCrossentropy(\n from_logits=False,\n label_smoothing=0.0,\n axis=-1,\n reduction='sum_over_batch_size',\n name='categorical_crossentropy'\n )\n\n### Used in the notebooks\n\n| Used in the guide | Used in the tutorials |\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - [Effective Tensorflow 2](https://www.tensorflow.org/guide/effective_tf2) - [Debug a TensorFlow 2 migrated training pipeline](https://www.tensorflow.org/guide/migrate/migration_debugging) | - [Adversarial example using FGSM](https://www.tensorflow.org/tutorials/generative/adversarial_fgsm) - [Retraining an Image Classifier](https://www.tensorflow.org/hub/tutorials/tf2_image_retraining) - [Implement Differential Privacy with TensorFlow Privacy](https://www.tensorflow.org/responsible_ai/privacy/tutorials/classification_privacy) - [Assess privacy risks with the TensorFlow Privacy Report](https://www.tensorflow.org/responsible_ai/privacy/tutorials/privacy_report) - [On-Device Training with TensorFlow Lite](https://www.tensorflow.org/lite/examples/on_device_training/overview) |\n\nUse this crossentropy loss function when there are two or more label\nclasses. We expect labels to be provided in a `one_hot` representation. If\nyou want to provide labels as integers, please use\n`SparseCategoricalCrossentropy` loss. There should be `num_classes` floating\npoint values per feature, i.e., the shape of both `y_pred` and `y_true` are\n`[batch_size, num_classes]`.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `from_logits` | Whether `y_pred` is expected to be a logits tensor. By default, we assume that `y_pred` encodes a probability distribution. |\n| `label_smoothing` | Float in \\[0, 1\\]. When \\\u003e 0, label values are smoothed, meaning the confidence on label values are relaxed. For example, if `0.1`, use `0.1 / num_classes` for non-target labels and `0.9 + 0.1 / num_classes` for target labels. |\n| `axis` | The axis along which to compute crossentropy (the features axis). Defaults to `-1`. |\n| `reduction` | Type of reduction to apply to the loss. In almost all cases this should be `\"sum_over_batch_size\"`. Supported options are `\"sum\"`, `\"sum_over_batch_size\"` or `None`. |\n| `name` | Optional name for the loss instance. |\n\n\u003cbr /\u003e\n\n#### Examples:\n\n#### Standalone usage:\n\n y_true = [[0, 1, 0], [0, 0, 1]]\n y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]]\n # Using 'auto'/'sum_over_batch_size' reduction type.\n cce = keras.losses.CategoricalCrossentropy()\n cce(y_true, y_pred)\n 1.177\n\n # Calling with 'sample_weight'.\n cce(y_true, y_pred, sample_weight=np.array([0.3, 0.7]))\n 0.814\n\n # Using 'sum' reduction type.\n cce = keras.losses.CategoricalCrossentropy(\n reduction=\"sum\")\n cce(y_true, y_pred)\n 2.354\n\n # Using 'none' reduction type.\n cce = keras.losses.CategoricalCrossentropy(\n reduction=None)\n cce(y_true, y_pred)\n array([0.0513, 2.303], dtype=float32)\n\nUsage with the `compile()` API: \n\n model.compile(optimizer='sgd',\n loss=keras.losses.CategoricalCrossentropy())\n\nMethods\n-------\n\n### `call`\n\n[View source](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/losses/losses.py#L20-L22) \n\n call(\n y_true, y_pred\n )\n\n### `from_config`\n\n[View source](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/losses/losses.py#L30-L34) \n\n @classmethod\n from_config(\n config\n )\n\n### `get_config`\n\n[View source](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/losses/losses.py#L753-L760) \n\n get_config()\n\n### `__call__`\n\n[View source](https://github.com/keras-team/keras/tree/v3.3.3/keras/src/losses/loss.py#L32-L61) \n\n __call__(\n y_true, y_pred, sample_weight=None\n )\n\nCall self as a function."]]