Spec-Zone.ru › TensorFlow 2.4

tf.compat.v1.nn.sampled_softmax_loss

Вычисляет и возвращает обучающее значение потерь методом выборочной softmax.

tf.compat.v1.nn.sampled_softmax_loss(
    weights, biases, labels, inputs, num_sampled, num_classes, num_true=1,
    sampled_values=None, remove_accidental_hits=True,
    partition_strategy='mod', name='sampled_softmax_loss',
    seed=None
)

Это более быстрый способ обучения классификатора softmax с большим количеством классов.

Эта операция предназначена только для обучения. Она, как правило, является заниженной оценкой полной потери softmax.

Распространённый случай использования этого метода — обучение, а вычисление полной потери softmax для оценки или вывода. В этом случае вы должны установить partition_strategy="div" для того, чтобы две потери были согласованы, как в следующем примере:

if mode == "train":
  loss = tf.nn.sampled_softmax_loss(
      weights=weights,
      biases=biases,
      labels=labels,
      inputs=inputs,
      ...,
      partition_strategy="div")
elif mode == "eval":
  logits = tf.matmul(inputs, tf.transpose(weights))
  logits = tf.nn.bias_add(logits, biases)
  labels_one_hot = tf.one_hot(labels, n_classes)
  loss = tf.nn.softmax_cross_entropy_with_logits(
      labels=labels_one_hot,
      logits=logits)

См. нашу справку по алгоритмам выборочного отбора кандидатов (pdf). Также см. раздел 3 статьи (Jean et al., 2014) для математических обоснований.

Аргументы
weights A Tensor формы [num_classes, dim], или список Tensor объектов, конкатенация которых по размерности 0 имеет форму [num_classes, dim]. Вектора встраивания классов (возможно, фрагментированные).
biases A Tensor формы [num_classes]. Смещения классов.
labels A Tensor типа int64 и формы [batch_size, num_true]. Целевые классы. Обратите внимание, что этот формат отличается от аргумента labels в nn.softmax_cross_entropy_with_logits.
inputs A Tensor формы [batch_size, dim]. Активации на выходе входной сети.
num_sampled Целое число. Количество классов, которые случайным образом выбираются в каждом батче.
num_classes Целое число. Количество возможных классов.
num_true Целое число. Количество целевых классов на обучающий пример.
sampled_values Кортеж (sampled_candidates, true_expected_count, sampled_expected_count) возвращённый функцией *_candidate_sampler. (Если None, используется значение по умолчанию log_uniform_candidate_sampler).
remove_accidental_hits Булево значение. Удалять ли «случайные совпадения», где выбранный класс равен одному из целевых классов. По умолчанию True.
partition_strategy Строка, определяющая стратегию разбиения, актуальная, если len(weights) > 1. В настоящее время поддерживаются "div" и "mod". Значение по умолчанию "mod". См. tf.nn.embedding_lookup для получения дополнительной информации.
name Имя операции (необязательно).
seed Псевдослучайное число для выборочного отбора кандидатов. По умолчанию None, что не устанавливает генератор случайных чисел на уровне операции для выборочного отбора кандидатов.
Возвращаемое значение
A batch_size 1-мерный тензор значений потерь выборочной softmax для каждого примера.

Ссылки:

Использование очень большого словаря целей для нейронного машинного перевода: Jean et al., 2014 (pdf)

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/compat/v1/nn/sampled_softmax_loss

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API