РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
392 of 824 menu

Класс 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:

<+python+> import tensorflow as tf y_true = tf.constant([[0, 0, 1], [1, 0, 0], [0, 1, 0]]) y_pred = tf.constant([[1.0, 2.0, 3.0], [3.0, 1.0, 1.0], [1.0, 3.0, 1.0]]) cce = tf.keras.losses.CategoricalCrossentropy(from_logits=True) loss = cce(y_true, y_pred) print(loss) <-python+>

Результат выполнения кода:

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:

<+python+> import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(3, activation='softmax', input_shape=(5,)) ]) model.compile( optimizer='adam', loss=tf.keras.losses.CategoricalCrossentropy(), metrics=['accuracy'] ) print(model.loss) <-python+>

Результат выполнения кода:

<keras.losses.CategoricalCrossentropy object at 0x7f8b8c0b5d30>

Смотрите также

  • класс BinaryCrossentropy,
    который вычисляет бинарную перекрестную энтропию
  • класс SparseCategoricalCrossentropy,
    который вычисляет категориальную перекрестную энтропию для целочисленных меток
  • класс CategoricalAccuracy,
    который вычисляет точность для категориальных меток
  • класс CategoricalFocalCrossentropy,
    который вычисляет категориальную фокальную перекрестную энтропию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить