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

Функция nn.weighted_cross_entropy_with_logits

Функция nn.weighted_cross_entropy_with_logits вычисляет сигмоидную кросс-энтропию между логитами и целевыми метками, но, в отличие от обычной версии, позволяет задавать вес для положительного класса. Это полезно при работе с несбалансированными наборами данных, когда один класс встречается значительно чаще другого. Первым параметром передаются метки, вторым - логиты, третьим - вес положительного класса. Дополнительно можно указать параметр pos_weight в виде тензора для поэлементного взвешивания.

Синтаксис

tf.nn.weighted_cross_entropy_with_logits( labels, logits, pos_weight, name=None )

Пример

Давайте вычислим взвешенную кросс-энтропию для простого набора меток и логитов:

import tensorflow as tf labels = tf.constant([1.0, 0.0, 1.0, 0.0]) logits = tf.constant([2.0, -1.0, 0.5, 3.0]) pos_weight = tf.constant(2.0) res = tf.nn.weighted_cross_entropy_with_logits( labels=labels, logits=logits, pos_weight=pos_weight ) print(res)

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

tf.Tensor([0.2532842 1.3132616 0.94703287 6.0067153 ], shape=(4,), dtype=float32)

Пример

Давайте передадим pos_weight как тензор для поэлементного взвешивания каждого примера:

import tensorflow as tf labels = tf.constant([1.0, 0.0, 1.0, 0.0]) logits = tf.constant([2.0, -1.0, 0.5, 3.0]) pos_weight = tf.constant([1.0, 2.0, 3.0, 4.0]) res = tf.nn.weighted_cross_entropy_with_logits( labels=labels, logits=logits, pos_weight=pos_weight ) print(res)

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

tf.Tensor([0.1266421 2.626523 2.8410988 3.0043576 ], shape=(4,), dtype=float32)

Пример

Давайте уменьшим значение результата с помощью функции reduce_mean, чтобы получить скалярное значение потерь:

import tensorflow as tf labels = tf.constant([1.0, 0.0, 1.0, 0.0]) logits = tf.constant([2.0, -1.0, 0.5, 3.0]) pos_weight = tf.constant(2.0) res = tf.nn.weighted_cross_entropy_with_logits( labels=labels, logits=logits, pos_weight=pos_weight ) loss = tf.reduce_mean(res) print(loss)

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

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

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

  • функцию sigmoid_cross_entropy_with_logits,
    которая вычисляет сигмоидную кросс-энтропию без весов
  • функцию softmax_cross_entropy_with_logits,
    которая вычисляет кросс-энтропию с softmax для многоклассовой классификации
  • функцию sparse_softmax_cross_entropy_with_logits,
    которая вычисляет кросс-энтропию с целочисленными метками
  • функцию softmax,
    которая преобразует логиты в вероятности
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить