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