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