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

Функция nn.sampled_softmax_loss

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

Синтаксис

tf.nn.sampled_softmax_loss(weights, biases, labels, inputs, num_sampled, num_classes, [num_true], [sampled_values], [remove_accidental_hits], [seed], [name])

Пример

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

import tensorflow as tf tf.random.set_seed(0) weights = tf.constant([[1.0, 2.0], [2.0, 1.0], [0.5, 0.5], [1.5, 1.5]]) biases = tf.constant([0.1, 0.1, 0.1, 0.1]) labels = tf.constant([[0]]) inputs = tf.constant([[1.0, 2.0]]) loss = tf.nn.sampled_softmax_loss( weights=weights, biases=biases, labels=labels, inputs=inputs, num_sampled=2, num_classes=4 ) print(loss)

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

tf.Tensor([1.6356295], shape=(1,), dtype=float32)

Пример

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

import tensorflow as tf tf.random.set_seed(0) weights = tf.constant([[1.0, 2.0], [2.0, 1.0], [0.5, 0.5], [1.5, 1.5]]) biases = tf.constant([0.1, 0.1, 0.1, 0.1]) labels = tf.constant([[0], [2]]) inputs = tf.constant([[1.0, 2.0], [2.0, 1.0]]) loss = tf.nn.sampled_softmax_loss( weights=weights, biases=biases, labels=labels, inputs=inputs, num_sampled=2, num_classes=4, seed=1 ) print(loss)

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

tf.Tensor([1.6356295 1.6356295], shape=(2,), dtype=float32)

Пример

Давайте вычислим среднее значение выборочной softmax-потери по батчу:

import tensorflow as tf tf.random.set_seed(0) weights = tf.constant([[1.0, 2.0], [2.0, 1.0], [0.5, 0.5], [1.5, 1.5]]) biases = tf.constant([0.1, 0.1, 0.1, 0.1]) labels = tf.constant([[0], [2]]) inputs = tf.constant([[1.0, 2.0], [2.0, 1.0]]) loss = tf.nn.sampled_softmax_loss( weights=weights, biases=biases, labels=labels, inputs=inputs, num_sampled=2, num_classes=4, seed=1 ) res = tf.reduce_mean(loss) print(res)

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

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

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

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