AdaptiveLogSoftmaxWithLoss
-
class torch.nn.AdaptiveLogSoftmaxWithLoss(in_features, n_classes, cutoffs, div_value=4.0, head_bias=False, device=None, dtype=None)[source] -
Эффективное приближение softmax, как описано в Эффективное приближение softmax для графических процессоров авторами Эдуардом Грэвом, Арманом Жулином, Мустафой Сиссе, Дэвидом Гранжье и Эвером Жего.
Адаптивное 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
- Форма:
-
- вход: или
- целевое: или , где каждое значение удовлетворяет условию
- выход1: или
- выход2:
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/2.1/generated/torch.nn.AdaptiveLogSoftmaxWithLoss.html