tf.random.uniform_candidate_sampler
Выбирает набор классов с использованием равномерного базового распределения.
tf.random.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) из базового распределения.
Базовое распределение для этой операции — равномерное распределение по диапазону целых чисел [0, range_max).
Кроме того, эта операция возвращает тензоры 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 | Tensor типа int64 и формы [batch_size, num_true]. Целевые классы. |
num_true | int. Количество целевых классов на обучающий пример. |
num_sampled | int. Количество классов для случайной выборки. Возвращаемое значение sampled_candidates будет иметь форму [num_sampled]. Если unique=True, значение num_sampled должно быть меньше или равно range_max. |
unique | bool. Определяет, должны ли все выбранные классы в пакете быть уникальными. |
range_max | int. Количество возможных классов. |
seed | int. Начальное значение, специфичное для операции. По умолчанию — 0. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
sampled_candidates | Тензор типа int64 и формы [num_sampled]. Выбранные классы: возможны дубликаты (unique=False) либо все классы уникальны (unique=True). Как отмечалось выше, 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/uniform_candidate_sampler