AdaptiveLogSoftmaxWithLoss
-
class torch.nn.AdaptiveLogSoftmaxWithLoss(in_features, n_classes, cutoffs, div_value=4.0, head_bias=False, device=None, dtype=None)[source]
-
Эффективное приближение softmax, как описано в Эффективном приближении softmax для GPU Эдуардом Гравом, Армандом Жулином, Мустафой Сиссе, Дэвидом Гранжье и Эвером Жегу.
Адаптивное softmax — это приближенный метод обучения моделей с большими пространствами выходных значений. Он наиболее эффективен, когда распределение меток сильно несбалансировано, например, в моделировании естественного языка, где распределение частот слов приблизительно соответствует закону Ципфа.
Адаптивное softmax разбивает метки на несколько кластеров в соответствии с их частотой. Эти кластеры могут содержать разное количество целевых значений. Кроме того, кластеры, содержащие менее частые метки, назначают меткам вложения меньшей размерности, что ускоряет вычисления. Для каждой мини-пакетной выборки оцениваются только кластеры, в которых присутствует хотя бы одна цель.
Идея состоит в том, что кластеры, к которым часто обращаются (например, первый, содержащий наиболее частые метки), должны быть также дешевыми для вычисления — то есть содержать небольшое количество назначенных меток.
Мы настоятельно рекомендуем ознакомиться с оригинальной статьей для получения более подробной информации.
-
cutoffsдолжно быть упорядоченной последовательностью целых чисел, отсортированных по возрастанию. Она управляет количеством кластеров и разделением целей по кластерам. Например, установкаcutoffs = [10, 100, 1000]означает, что первые10цели будут назначены в «голову» адаптивного softmax, цели11, 12, …, 100будут назначены первому кластеру, а цели101, 102, …, 1000— второму кластеру, в то время как цели1001, 1002, …, n_classes - 1— последнему, третьему кластеру. -
div_valueиспользуется для вычисления размера каждого дополнительного кластера, который определяется как , где — индекс кластера (при этом кластеры для менее частых слов имеют большие индексы, а индексы начинаются с ). -
head_bias, если установлено в True, добавляет член смещения к «голове» адаптивного softmax. Подробности см. в статье. В официальной реализации установлено в False.
Предупреждение
Метки, передаваемые в качестве входных данных в этот модуль, должны быть отсортированы по частоте. Это означает, что наиболее часто встречающаяся метка должна быть представлена индексом
0, а наименее часто встречающаяся — индексомn_classes - 1.Примечание
Этот модуль возвращает
NamedTupleс полямиoutputиloss. Подробности см. в дополнительной документации.Примечание
Для вычисления логарифмических вероятностей для всех классов можно использовать метод
log_prob.- Параметры:
-
- in_features (int) – Количество признаков в тензоре входных данных
- n_classes (int) – Количество классов в наборе данных
- cutoffs (Sequence) – Пороговые значения, используемые для назначения целей в их корзины
- div_value (float, необязательно) – значение, используемое в качестве показателя для вычисления размеров кластеров. По умолчанию: 4.0
-
head_bias (bool, необязательно) – Если
True, добавляет член смещения к «голове» адаптивного softmax. По умолчанию:False
- Возвращает:
-
-
output — тензор размера
N, содержащий вычисленные логарифмические вероятности целевых значений для каждого примера - loss — скаляр, представляющий вычисленную потерю негативного логарифмического правдоподобия
-
output — тензор размера
- Тип возвращаемого значения:
-
NamedTupleс полямиoutputиloss
- Форма:
-
- вход: или
- цель: или , где каждое значение удовлетворяет
- output1: или
- output2:
Scalar
-
log_prob(input)[source] -
Вычисляет логарифмические вероятности для всех
- Параметры:
-
input (Tensor) — мини-пакет примеров
- Возвращает:
-
логарифмические вероятности для каждого класса в диапазоне , где — параметр, переданный в конструктор
AdaptiveLogSoftmaxWithLoss. - Тип возвращаемого значения:
- Форма:
-
- Вход:
- Выход:
-
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.AdaptiveLogSoftmaxWithLoss.html