Spec-Zone.ru › TensorFlow

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 An int. Число классов, случайно выбираемых для каждого пакета.
num_classes An int. Число возможных классов.
num_true An int. Число целевых классов для каждого обучающего примера.
sampled_values кортеж (sampled_candidates, true_expected_count, sampled_expected_count), возвращаемый функцией *_candidate_sampler. (Если значение равно None, используется значение по умолчанию log_uniform_candidate_sampler.)
remove_accidental_hits A bool. Указывает, следует ли удалять «случайные совпадения», когда выбранный класс совпадает с одним из целевых классов. По умолчанию — True.
partition_strategy Строка, задающая стратегию разбиения на разделы; имеет значение, если len(weights) > 1. Сейчас поддерживаются "div" и "mod". По умолчанию — "mod". Подробнее см. tf.nn.embedding_lookup.
name Имя операции (необязательно).
seed Начальное значение генератора случайных чисел для выборки кандидатов. По умолчанию — None, что не задаёт начальное значение генератора случайных чисел на уровне операции для выборки кандидатов.
Возвращаемое значение
A batch_size одномерный тензор со значениями функции потерь sampled softmax для каждого примера.
Ссылки
Об использовании очень большого целевого словаря для нейронного машинного перевода: 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/api_docs/python/tf/compat/v1/nn/sampled_softmax_loss

Spec-Zone.ru

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