Spec-Zone.ru › PyTorch 1

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 используется для вычисления размера каждого дополнительного кластера, который определяется как ⌊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}
  • output1: (N)(N) или ()()
  • output2: 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 (Tensor) – пакет примеров

Возвращаемое значение:

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

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

вывод (Tensor)

Форма:
  • Вход: (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/1.13/generated/torch.nn.AdaptiveLogSoftmaxWithLoss.html

Spec-Zone.ru

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