Класс CategoricalCrossentropy
Класс CategoricalCrossentropy вычисляет категориальную перекрестную энтропию между истинными и предсказанными метками. Функция потерь применяется к данным, первым параметром передается имя функции потерь, вторым - способ приведения меток, третьим - тип данных. Класс используется в задачах многоклассовой классификации, когда истинные метки представлены в one-hot формате.
Синтаксис
tf.keras.losses.CategoricalCrossentropy(
from_logits=False,
label_smoothing=0.0,
axis=-1,
reduction='sum_over_batch_size',
name='categorical_crossentropy'
)
Параметры
from_logits - логическое значение, указывающее, являются ли входные данные логитами. По умолчанию False.
label_smoothing - значение от 0 до 1 для сглаживания меток. По умолчанию 0.0.
axis - ось, по которой вычисляется перекрестная энтропия. По умолчанию -1.
reduction - тип приведения результата. По умолчанию 'sum_over_batch_size'.
name - имя функции потерь. По умолчанию 'categorical_crossentropy'.
Пример
Давайте вычислим категориальную перекрестную энтропию для простого случая с тремя классами:
import tensorflow as tf
y_true = tf.constant([[0, 0, 1], [1, 0, 0], [0, 1, 0]])
y_pred = tf.constant([[0.1, 0.2, 0.7], [0.8, 0.1, 0.1], [0.2, 0.7, 0.1]])
cce = tf.keras.losses.CategoricalCrossentropy()
loss = cce(y_true, y_pred)
print(loss)
Результат выполнения кода:
tf.Tensor(0.22839303, shape=(), dtype=float32)
Пример
Давайте вычислим категориальную перекрестную энтропию с параметром from_logits=True:
Результат выполнения кода:
tf.Tensor(0.23978783, shape=(), dtype=float32)
Пример
Давайте вычислим категориальную перекрестную энтропию с указанием имени и типа приведения:
import tensorflow as tf
y_true = tf.constant([[0, 0, 1], [1, 0, 0]])
y_pred = tf.constant([[0.1, 0.2, 0.7], [0.8, 0.1, 0.1]])
cce = tf.keras.losses.CategoricalCrossentropy(
name='my_cce',
reduction=tf.keras.losses.Reduction.SUM
)
loss = cce(y_true, y_pred)
print(loss)
Результат выполнения кода:
tf.Tensor(0.7138191, shape=(), dtype=float32)
Пример
Давайте используем CategoricalCrossentropy в модели Keras:
Результат выполнения кода:
<keras.losses.CategoricalCrossentropy object at 0x7f8b8c0b5d30>
Смотрите также
-
класс
BinaryCrossentropy,
который вычисляет бинарную перекрестную энтропию -
класс
SparseCategoricalCrossentropy,
который вычисляет категориальную перекрестную энтропию для целочисленных меток -
класс
CategoricalAccuracy,
который вычисляет точность для категориальных меток -
класс
CategoricalFocalCrossentropy,
который вычисляет категориальную фокальную перекрестную энтропию