Spec-Zone.ru › TensorFlow 2.3

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 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-мерный тензор потерь выборочной софтмакс на пример.

Ссылки:

Об использовании очень большого словаря целевых слов для машинного перевода: 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.3/api_docs/python/tf/compat/v1/nn/sampled_softmax_loss

Spec-Zone.ru

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