Spec-Zone.ru › PyTorch 2

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 используется для вычисления размера каждого дополнительного кластера, который задаётся как ⌊in_featuresdiv_valueidx⌋\left\lfloor\frac{\texttt{in\_features}}{\texttt{div\_value}^{idx}}\right\rfloor, где idxidx — индекс кластера (при этом кластеры для менее частых слов имеют большие индексы, а индексы начинаются с 11).
  • 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 — скаляр, представляющий вычисленную потерю негативного логарифмического правдоподобия
Тип возвращаемого значения

NamedTuple с полями output и loss

Форма:
  • вход: (N,in_features)(N, \texttt{in\_features}) или (in_features)(\texttt{in\_features})
  • целевое: (N)(N) или ()(), где каждое значение удовлетворяет условию 0<=target[i]<=n_classes0 <= \texttt{target[i]} <= \texttt{n\_classes}
  • выход1: (N)(N) или ()()
  • выход2: Scalar
log_prob(input) [source]

Вычисляет логарифмические вероятности для всех n_classes\texttt{n\_classes}

Параметры

input (Tensor) – мини-пакет примеров

Возвращает

логарифмические вероятности для каждого класса cc в диапазоне 0<=c<=n_classes0 <= c <= \texttt{n\_classes}, где n_classes\texttt{n\_classes} — параметр, переданный конструктору AdaptiveLogSoftmaxWithLoss.

Тип возвращаемого значения

Tensor

Форма:
  • Вход: (N,in_features)(N, \texttt{in\_features})
  • Выход: (N,n_classes)(N, \texttt{n\_classes})
predict(input) [source]

Это эквивалентно self.log_prob(input).argmax(dim=1), но в некоторых случаях более эффективно.

Параметры

input (Тензор) – пакет примеров

Возвращает

класс с наибольшей вероятностью для каждого примера

Тип возвращаемого значения

output (Тензор)

Форма:
  • Вход: (N,in_features)(N, \texttt{in\_features})
  • Выход: (N)(N)

© 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

Spec-Zone.ru

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