Класс KLDivergence
Класс KLDivergence вычисляет метрику потерь,
которая измеряет, насколько одно распределение
вероятностей отличается от другого. Чаще всего
используется для сравнения предсказанного
распределения с истинным распределением.
Класс наследуется от базового класса Loss.
Первым параметром при создании экземпляра класса
передается reduction - метод сокращения
потерь. Вторым параметром можно передать
name - имя для операции. По умолчанию
используется сокращение sum_over_batch_size.
Синтаксис
tf.keras.losses.KLDivergence(reduction, name)
Пример
Давайте создадим экземпляр класса KLDivergence
и вычислим потери между двумя тензорами:
import tensorflow as tf
kl = tf.keras.losses.KLDivergence()
y_true = tf.constant([0.1, 0.9, 0.0])
y_pred = tf.constant([0.2, 0.7, 0.1])
res = kl(y_true, y_pred)
print(res)
Результат выполнения кода:
tf.Tensor(0.16382827, shape=(), dtype=float32)
Пример
Давайте вычислим потери для двумерного тензора, где каждая строка представляет отдельное распределение:
import tensorflow as tf
kl = tf.keras.losses.KLDivergence()
y_true = tf.constant([[0.1, 0.9], [0.8, 0.2]])
y_pred = tf.constant([[0.2, 0.8], [0.7, 0.3]])
res = kl(y_true, y_pred)
print(res)
Результат выполнения кода:
tf.Tensor(0.039077372, shape=(), dtype=float32)
Пример
Давайте изменим метод сокращения на sum,
чтобы получить сумму потерь по всем элементам:
Результат выполнения кода:
tf.Tensor(0.4914848, shape=(), dtype=float32)
Смотрите также
-
класс
CategoricalCrossentropy,
который вычисляет категориальную кросс-энтропию -
класс
SparseCategoricalCrossentropy,
который вычисляет разреженную категориальную кросс-энтропию -
класс
BinaryCrossentropy,
который вычисляет бинарную кросс-энтропию -
класс
Poisson,
который вычисляет потери Пуассона