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

Класс CategoricalFocalCrossentropy

Класс CategoricalFocalCrossentropy вычисляет фокальную кроссэнтропию для задач категориальной классификации. Он является модификацией обычной категориальной кроссэнтропии и позволяет сфокусировать обучение на сложных примерах, уменьшая вклад простых. Первым параметром передается коэффициент фокусировки gamma, вторым - коэффициент сглаживания меток label_smoothing. Также можно передать веса классов alpha.

Синтаксис

tf.keras.losses.CategoricalFocalCrossentropy( gamma=2.0, alpha=0.25, label_smoothing=0.0, from_logits=False, reduction='sum_over_batch_size' )

Пример

Давайте вычислим фокальную кроссэнтропию для двух классов:

import tensorflow as tf loss = tf.keras.losses.CategoricalFocalCrossentropy() y_true = tf.constant([[1.0, 0.0], [0.0, 1.0]]) y_pred = tf.constant([[0.9, 0.1], [0.2, 0.8]]) res = loss(y_true, y_pred) print(res)

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

tf.Tensor(0.011031, shape=(), dtype=float32)

Пример

Давайте изменим параметр gamma и посмотрим, как это повлияет на результат:

<+python+> import tensorflow as tf loss = tf.keras.losses.CategoricalFocalCrossentropy(gamma=1.0) y_true = tf.constant([[1.0, 0.0], [0.0, 1.0]]) y_pred = tf.constant([[0.9, 0.1], [0.2, 0.8]]) res = loss(y_true, y_pred) print(res) <-python+>

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

tf.Tensor(0.027603, shape=(), dtype=float32)

Пример

Давайте используем фокальную кроссэнтропию при компиляции модели:

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.CategoricalFocalCrossentropy(), metrics=['accuracy'] ) x = tf.random.normal((4, 5)) y = tf.constant([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0]]) model.fit(x, y, epochs=1, verbose=0) res = model.evaluate(x, y, verbose=0) print(res)

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

[0.15384616, 0.5]

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

  • класс CategoricalCrossentropy,
    который вычисляет обычную категориальную кроссэнтропию
  • класс BinaryFocalCrossentropy,
    который вычисляет бинарную фокальную кроссэнтропию
  • класс SparseCategoricalCrossentropy,
    который вычисляет разреженную категориальную кроссэнтропию
  • класс KLDivergence,
    который вычисляет дивергенцию Кульбака-Лейблера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить