Класс BinaryCrossentropy
Класс BinaryCrossentropy вычисляет функцию потерь
бинарной кросс-энтропии между метками и предсказаниями.
Используется в задачах бинарной классификации, где выход
модели лежит в диапазоне от 0 до 1.
Первым параметром передается флаг from_logits,
вторым - коэффициент сглаживания меток label_smoothing,
третьим - ось вычисления axis. Класс наследуется
от Loss и поддерживает вызов с тензорами
y_true и y_pred.
Синтаксис
tf.keras.losses.BinaryCrossentropy(
from_logits=False,
label_smoothing=0.0,
axis=-1,
reduction='sum_over_batch_size',
name='binary_crossentropy'
)
Пример
Давайте создадим объект функции потерь и вычислим
значение для истинных меток 1, 0, 1
и предсказаний 0.9, 0.1, 0.8:
import tensorflow as tf
bce = tf.keras.losses.BinaryCrossentropy()
y_true = tf.constant([1, 0, 1])
y_pred = tf.constant([0.9, 0.1, 0.8])
res = bce(y_true, y_pred)
print(res)
Результат выполнения кода:
tf.Tensor(0.14463937, shape=(), dtype=float32)
Пример
Давайте вычислим потери, когда модель возвращает
логиты без применения сигмоиды, установив
параметр from_logits в True:
import tensorflow as tf
bce = tf.keras.losses.BinaryCrossentropy(from_logits=True)
y_true = tf.constant([1, 0, 1])
y_pred = tf.constant([2.0, -1.0, 1.5])
res = bce(y_true, y_pred)
print(res)
Результат выполнения кода:
tf.Tensor(0.18572532, shape=(), dtype=float32)
Пример
Давайте применим сглаживание меток с помощью
параметра label_smoothing:
import tensorflow as tf
bce = tf.keras.losses.BinaryCrossentropy(label_smoothing=0.1)
y_true = tf.constant([1, 0, 1])
y_pred = tf.constant([0.9, 0.1, 0.8])
res = bce(y_true, y_pred)
print(res)
Результат выполнения кода:
tf.Tensor(0.28534335, shape=(), dtype=float32)
Смотрите также
-
класс
CategoricalCrossentropy,
который вычисляет категориальную кросс-энтропию -
класс
SparseCategoricalCrossentropy,
который вычисляет разреженную категориальную кросс-энтропию -
класс
BinaryFocalCrossentropy,
который вычисляет бинарную фокальную кросс-энтропию -
функцию
sigmoid,
которая применяет сигмоиду к логитам