Spec-Zone.ru › PyTorch 2.14

torch.nn.functional.linear_cross_entropy

torch.nn.functional.linear_cross_entropy(input, linear_weight, target, *, linear_bias=None, weight=None, reduction='mean', ignore_index=None, label_smoothing=0.0, options=None) [источник]

Вычисляет перекрёстную энтропию между линейно преобразованными входными данными и целевыми значениями.

Выражение:

loss = linear_cross_entropy(input, linear_weight, target, **kwargs)

эквивалентно следующей эталонной реализации linear_cross_entropy:

logits = linear(input, linear_weight)
loss = cross_entropy(logits, target, **kwargs)

при условии, что ignore_index явно не задано как None в kwargs (поскольку cross_entropy() не принимает None для ignore_index).

Подробности см. в описаниях Linear и CrossEntropyLoss.

Параметры:
  • input (Tensor) – входные примеры.
  • linear_weight (Tensor) – вес линейного преобразования.
  • target (Tensor) – Индексы целевых классов или вероятности классов. При использовании options != None вероятности классов используют путь с разбиением на части для reduction 'mean' / 'sum', если тип данных целевого тензора совпадает с типом данных input и для целевого тензора не требуется вычисление градиента; для других конфигураций с вероятностями используется эталонная реализация с предупреждением (градиенты по целевому тензору доступны только при использовании эталонного пути).
  • linear_bias (Tensor, необязательный) – смещение, добавляемое к линейной проекции (форма (C,) или (C, d_1, ..., d_K) для K-мерной функции потерь, соответствующая linear_weight). При использовании options != None смещение K-мерной формы (out_features != ()) переключается на эталонную реализацию с предупреждением; путь с разбиением на части поддерживает только смещение формы (C,). По умолчанию: None.
  • weight (Tensor, необязательный) – ручной вес масштабирования, назначаемый каждому классу.
  • reduction (str, необязательный) – Задаёт способ редукции выходных данных: 'none' | 'mean' | 'sum'. 'none': редукция не выполняется, 'mean': сумма выходных данных делится на число элементов в них, 'sum': выходные данные суммируются. По умолчанию: 'mean'.
  • ignore_index (int, необязательный) – Задаёт целевое значение, которое игнорируется и не влияет на градиент входных данных. Обратите внимание, что ignore_index применимо только тогда, когда цель содержит индексы классов. По умолчанию: None. Если цель содержит индексы классов, значение по умолчанию преобразуется в -100. Примечание: значение ignore_index по умолчанию в cross_entropy равно -100 для обоих типов целевых данных.
  • label_smoothing (float, необязательный) – Число с плавающей запятой в диапазоне [0.0, 1.0]. Задаёт степень сглаживания при вычислении функции потерь, где 0.0 означает отсутствие сглаживания. Целевые значения становятся смесью исходных истинных меток и равномерного распределения, как описано в статье «Переосмысление архитектуры Inception для компьютерного зрения». По умолчанию: 0.00.0.
  • options (LinearCrossEntropyOptions, необязательный) – Задаёт параметры стратегии разбиения на части; подробности см. в описании LinearCrossEntropyOptions. Разбиение на части уменьшает потребление памяти. Чтобы включить эталонную реализацию linear_cross_entropy, используйте options=None. По умолчанию: None. См. примечание об autograd / compile ниже: в нём указано, какие API более высокого уровня (torch.compile, torch.func.grad, torch.func.vmap(grad(...)), AD высших порядков или прямого режима) работают только с эталонным путём options=None.
Тип возвращаемого значения:

Tensor

Примечание

Ограничения пути с разбиением на части (options, а не None). Операция с разбиением на части предварительно вычисляет градиенты при прямом проходе и использует их, изменяя данные на месте во время обратного прохода, что выходит за рамки стандартного контракта autograd:

  • AD высших порядков (create_graph=True, hessian) не поддерживается.
  • AD прямого режима (jvp, jacfwd) не поддерживается.
  • torch.func.grad / vmap(grad(...)) не работает, но обычный output.backward() работает.
  • torch.compile переключается на eager-режим на операции с разбиением на части; allow_retain_graph=True принудительно включается внутри для корректной работы двойного обратного прохода (с предупреждением).
  • torch.jit.trace переключается на эталонный путь с предупреждением.
  • LinearCrossEntropyOptions нельзя компилировать с помощью TorchScript.

Эталонный путь (options=None) поддерживает всё перечисленное выше.

Форма:
  • Входные данные: (infeatures)(in_features) или (N,in_features)(N, in\_features).
  • Вес линейного преобразования: (C,in_features)(C, in\_features) или (C,d1,...,dK,in_features)(C, d_1, ..., d_K, in\_features) при K≥1K \geq 1 для K-мерной функции потерь. Примечание: многомерные веса (K > 0) требуют пакетного входа (N,in_features)(N, in\_features).
  • Целевые данные: если содержат индексы классов, имеют форму ()(), (N)(N) или (N,d1,d2,...,dK)(N, d_1, d_2, ..., d_K) при K≥1K\geq 1; каждое значение должно находиться в диапазоне [0,C)[0, C). При использовании индексов классов тип данных целевого тензора должен быть long. Если целевые данные содержат вероятности классов, целевой тензор должен иметь форму (C)(C), (N,C)(N, C) или (N,C,d1,d2,...,dK)(N, C, d_1, d_2, ..., d_K) при K≥1K\geq 1; каждое значение должно находиться в диапазоне [0,1][0, 1]. Это означает, что при использовании вероятностей классов тип данных целевого тензора должен быть float. Обратите внимание: PyTorch не проверяет строго ограничения на вероятности классов, поэтому пользователь должен убедиться, что target содержит допустимые распределения вероятностей.
  • Вес: (C)(C).
  • Результат: если reduction имеет значение ‘none’, форма — ()(), (N)(N) или (N,d1,d2,...,dK)(N, d_1, d_2, ..., d_K) при K≥1K\geq 1 для K-мерной функции потерь; форма зависит от формы входных данных. В противном случае результат является скаляром.

где NN — размер пакета, а CC — число классов.

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.functional.linear_cross_entropy.html

Spec-Zone.ru

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