tf.random.log_uniform_candidate_sampler
Выборка набора классов с использованием логарифмически-равномерного (Zipfian) базового распределения.
tf.random.log_uniform_candidate_sampler(
true_classes,
num_true,
num_sampled,
unique,
range_max,
seed=None,
name=None
)
Использование в блокнотах
| Используется в учебниках |
|---|
Эта операция случайным образом выбирает тензор выборочных классов (sampled_candidates) из диапазона целых чисел [0, range_max).
См. Справочник по алгоритмам выборки кандидатов для краткого курса по выборке кандидатов.
Элементы sampled_candidates выбираются без возврата (если unique=True) или с возвратом (если unique=False) из базового распределения.
Базовое распределение для этой операции представляет собой приблизительно логарифмически-равномерное или Zipfian распределение:
P(class) = (log(class + 2) - log(class + 1)) / log(range_max + 1)
Этот выборщик полезен, когда целевые классы приблизительно следуют такому распределению — например, если классы представляют собой слова в лексиконе, упорядоченные в порядке убывания частоты. Если ваши классы не упорядочены по убыванию частоты, не используйте эту операцию.
Кроме того, эта операция возвращает тензоры true_expected_count и sampled_expected_count, представляющие число раз, когда каждый из целевых классов (true_classes) и выборочных классов (sampled_candidates) должен встречаться в среднем тензоре выборочных классов. Эти значения соответствуют Q(y|x), определённому в Справочнике по алгоритмам выборки кандидатов. Если unique=True, то это вероятности после отклонения, и мы вычисляем их приблизительно.
Обратите внимание, что эта функция (а также и другие *_candidate_sampler функции) предоставляет только компоненты для реализации различных алгоритмов выборки кандидатов, перечисленных в большой таблице в Справочнике по алгоритмам выборки кандидатов. Вам всё равно нужно реализовать эти алгоритмы самостоятельно.
Например, согласно этой таблице, фраза «отрицательные примеры» может означать разные вещи в разных алгоритмах. Например, в NCE «отрицательные примеры» означают S_i (что просто выбранные классы), которые могут перекрываться с истинными классами, в то время как в Sampled Logistic «отрицательные примеры» означают S_i - T_i, исключающие истинные классы. Возвращаемое значение sampled_candidates соответствует S_i, а не какому-либо конкретному определению «отрицательных примеров» в любом конкретном алгоритме. Вам необходимо выбрать алгоритм и вычислить «отрицательные примеры», определённые этим алгоритмом (например, S_i - T_i).
Ещё один пример: аргумент true_classes предназначен для вычисления выходного значения true_expected_count (как побочного продукта основного вычисления этой функции), которое может потребоваться некоторым алгоритмам (согласно этой таблице). Он не предназначен для исключения истинных классов в возвращаемом значении sampled_candidates. Опять же, этот шаг зависит от алгоритма и должен быть выполнен вами.
| Аргументы | |
|---|---|
true_classes | A Tensor типа int64 и формы [batch_size, num_true]. Целевые классы. |
num_true | An int. Количество целевых классов на один пример обучения. |
num_sampled | An int. Количество классов для случайной выборки. |
unique | A bool. Определяет, являются ли все выбранные классы в пачке уникальными. |
range_max | An int. Количество возможных классов. |
seed | An int. Семена, специфичные для операции. По умолчанию 0. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
sampled_candidates | Tensor типа int64 и формы [num_sampled]. Выбранные классы. Как отмечалось выше, sampled_candidates может перекрываться с истинными классами. |
true_expected_count | Tensor типа float. Такой же формы, как и true_classes. Ожидаемые количества по распределению выборки каждого из true_classes. |
sampled_expected_count | Tensor типа float. Такой же формы, как и sampled_candidates. Ожидаемые количества по распределению выборки каждого из sampled_candidates. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/random/log_uniform_candidate_sampler