tf.random.log_uniform_candidate_sampler
Выбирает набор классов с использованием лог-равномерного (зипфовского) базового распределения.
tf.random.log_uniform_candidate_sampler(
true_classes,
num_true,
num_sampled,
unique,
range_max,
seed=None,
name=None
)
Используется в блокнотах
| Используется в руководствах |
|---|
Эта операция случайным образом выбирает тензор сэмплированных классов (sampled_candidates) из диапазона целых чисел [0, range_max).
Краткий курс по выборке кандидатов (Candidate Sampling) см. в Candidate Sampling Algorithms Reference.
Элементы sampled_candidates извлекаются без возвращения (если unique=True) или с возвращением (если unique=False) из базового распределения.
Базовым распределением для этой операции является приблизительно лог-равномерное или зипфовское распределение:
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), определенному в Candidate Sampling Algorithms Reference. Если unique=True, то это вероятности после отклонения (post-rejection), и мы вычисляем их приближенно.
Обратите внимание, что эта функция (а также другие функции *_candidate_sampler) предоставляет только компоненты для реализации различных алгоритмов Candidate Sampling, перечисленных в большой таблице в документе Candidate Sampling Algorithms Reference. Сами алгоритмы вам по-прежнему необходимо реализовывать самостоятельно.
Например, согласно этой таблице, фраза «отрицательные примеры» (negative samples) может означать разное в разных алгоритмах. Например, в NCE «отрицательные примеры» означают S_i (что является просто сэмплированными классами), которые могут пересекаться с истинными классами, в то время как в Sampled Logistic «отрицательные примеры» означают S_i - T_i, что исключает истинные классы. Возвращаемое значение sampled_candidates соответствует S_i, а не какому-либо конкретному определению «отрицательных примеров» в каком-либо конкретном алгоритме. Вы сами должны выбрать алгоритм и вычислить «отрицательные примеры», определенные этим алгоритмом (например, S_i - T_i).
Другой пример: аргумент true_classes предназначен для вычисления выходных данных true_expected_count (как побочного продукта основных вычислений этой функции), которые могут потребоваться некоторым алгоритмам (согласно этой таблице). Он не предназначен для исключения истинных классов из возвращаемого значения sampled_candidates. Опять же, этот шаг зависит от конкретного алгоритма и должен выполняться вами.
| Args | |
|---|---|
true_classes | Tensor типа int64 и формы [batch_size, num_true]. Целевые классы. |
num_true | int. Количество целевых классов на один обучающий пример. |
num_sampled | int. Количество классов для случайной выборки. |
unique | bool. Определяет, являются ли все сэмплированные классы в пакете уникальными. |
range_max | int. Количество возможных классов. |
seed | int. Зависящее от операции начальное значение (seed). По умолчанию 0. |
name | Имя для операции (необязательно). |
| Returns | |
|---|---|
sampled_candidates | Тензор типа int64 и формы [num_sampled]. Сэмплированные классы. Как отмечалось выше, sampled_candidates могут пересекаться с истинными классами. |
true_expected_count | Тензор типа float. Той же формы, что и true_classes. Ожидаемые количества при распределении выборки каждого из true_classes. |
sampled_expected_count | Тензор типа 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