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 для компьютерного зрения». По умолчанию: .
-
options (LinearCrossEntropyOptions, необязательный) – Задаёт параметры стратегии разбиения на части; подробности см. в описании
LinearCrossEntropyOptions. Разбиение на части уменьшает потребление памяти. Чтобы включить эталонную реализациюlinear_cross_entropy, используйтеoptions=None. По умолчанию:None. См. примечание об autograd / compile ниже: в нём указано, какие API более высокого уровня (torch.compile,torch.func.grad,torch.func.vmap(grad(...)), AD высших порядков или прямого режима) работают только с эталонным путёмoptions=None.
- Тип возвращаемого значения:
Примечание
Ограничения пути с разбиением на части (
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) поддерживает всё перечисленное выше.- Форма:
-
- Входные данные: или .
- Вес линейного преобразования: или при для K-мерной функции потерь. Примечание: многомерные веса (K > 0) требуют пакетного входа .
- Целевые данные: если содержат индексы классов, имеют форму , или при ; каждое значение должно находиться в диапазоне . При использовании индексов классов тип данных целевого тензора должен быть long. Если целевые данные содержат вероятности классов, целевой тензор должен иметь форму , или при ; каждое значение должно находиться в диапазоне . Это означает, что при использовании вероятностей классов тип данных целевого тензора должен быть float. Обратите внимание: PyTorch не проверяет строго ограничения на вероятности классов, поэтому пользователь должен убедиться, что
targetсодержит допустимые распределения вероятностей. - Вес: .
- Результат: если reduction имеет значение ‘none’, форма — , или при для K-мерной функции потерь; форма зависит от формы входных данных. В противном случае результат является скаляром.
где — размер пакета, а — число классов.
© 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