Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.nn.sampled_softmax_loss

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

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
)

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

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

Часто используется этот метод для обучения, а полную потерю софтмакс вычисляют для оценки или вывода. В этом случае необходимо установить 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 Массив формы [num_classes, dim], или список объектов Tensor, конкатенация которых по размерности 0 имеет форму [num_classes, dim]. Векторные представления классов (возможно, разделенные).
biases Вектор формы [num_classes]. Смещения классов.
labels Вектор типа int64 и формы [batch_size, num_true]. Целевые классы. Обратите внимание, что этот формат отличается от аргумента labels в nn.softmax_cross_entropy_with_logits.
inputs Вектор формы [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, что не устанавливает опциональный уровень случайного семени для выборочного отбора кандидатов.
Возвращаемые значения
Вектор batch_size размерности 1, содержащий потери выборочного софтмакс для каждого примера.

Ссылки:

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

© 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/versions/r2.9/api_docs/python/tf/compat/v1/nn/sampled_softmax_loss

Spec-Zone.ru

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