LinearCrossEntropyLoss
-
class torch.nn.LinearCrossEntropyLoss(in_features, num_classes, *, out_features=(), bias=False, device=None, dtype=None, reduction='mean', weight=None, ignore_index=None, label_smoothing=0.0, options=None)[source] -
Этот критерий вычисляет функцию потерь перекрёстной энтропии между входными данными, линейно преобразованными в логиты, и целевыми данными.
Определение функции потерь перекрёстной энтропии см. в
CrossEntropyLoss.- Параметры:
-
- in_features (int) – Размер каждого входного образца.
- num_classes (int) – Количество классов, .
-
out_features (tuple[int], необязательный) – задаёт размеры для функции потерь K-го порядка. По умолчанию:
(). -
bias (bool, необязательный) – Если
True, внутреннийLinearдобавляет к логитам обучаемое смещение. Логическая форма —(C, *out_features); данные хранятся в плоском виде (self.linear.bias.shape == (C * prod(out_features),)) по той же причине, что иself.linear.weight: изменение формы выполняется вforward()перед передачей вlinear_cross_entropy()какlinear_bias. Приoptions != Noneсмещение K-го порядка (out_features != ()) приводит к использованию эталонной реализации с предупреждением; путь с разбиением на блоки поддерживает только смещение формы(C,). По умолчанию:False. -
device (
torch.device, необязательный) – требуемое устройство для линейных весов. По умолчанию:None. -
dtype (
torch.dtype, необязательный) – требуемый тип данных для линейных весов. По умолчанию:None. -
weight (Tensor, необязательный) – вручную заданные веса масштабирования для каждого класса. Если указан, должен быть тензором размера
C. -
reduction (str, необязательный) – Задаёт способ агрегирования выходных данных:
'none'|'mean'|'sum'.'none': агрегирование не выполняется,'mean': вычисляется среднее выходных данных с учётом весов,'sum': выходные данные суммируются. По умолчанию:'mean'. -
ignore_index (int, необязательный) – Задаёт значение целевого класса, которое игнорируется и не влияет на градиент входных данных. Обратите внимание:
ignore_indexприменим только в том случае, если целевые данные содержат индексы классов. По умолчанию:None. Если целевые данные содержат индексы классов, значение по умолчанию преобразуется в-100. Примечание: значение по умолчаниюignore_indexвCrossEntropyLossравно-100для обоих типов целевых данных. - label_smoothing (float, необязательный) – Число с плавающей точкой в диапазоне [0.0, 1.0]. Задаёт степень сглаживания при вычислении функции потерь, где 0.0 означает отсутствие сглаживания. Целевые данные становятся смесью исходной истинной разметки и равномерного распределения, как описано в статье Переосмысление архитектуры Inception для компьютерного зрения. По умолчанию: .
-
options (LinearCrossEntropyOptions, необязательный) – Задаёт параметры стратегии разбиения на блоки; подробнее см.
LinearCrossEntropyOptions. Чтобы включить эталонную реализацию linear_cross_entropy без разбиения на блоки, используйтеoptions=None. Примечание: передача значенияNoneoptionsделает модуль несовместимым сtorch.jit.script(); см. примечание ниже.
Предупреждение
При использовании
Noneoptionsпуть с разбиением на блоки потребляет предварительно вычисленные градиенты на месте, поэтому любой повторный вызовbackward()вызывает исключение (даже сretain_graph=True). ИспользуйтеLinearCrossEntropyOptions(allow_retain_graph=True), чтобы разрешить повторный обратный проход (при каждом вызове дополнительно выделяется память размером с градиент).Примечание
options=Noneподдерживает компиляцию скриптов; экземплярoptions— нет. Путь с разбиением на блоки не поддерживает AD высших порядков, AD в прямом режиме,torch.func.grad/vmap(grad(...))или понижение уровня Inductor; см.torch.nn.functional.linear_cross_entropy().- Форма:
-
- Входные данные: форма , .
- Целевые данные: если содержат индексы классов, форма , или , при этом каждое значение должно находиться в диапазоне . При использовании индексов классов тип данных целевых данных должен быть long. Если целевые данные содержат вероятности классов, их форма должна быть или , а каждое значение должно находиться в диапазоне . Это означает, что при использовании вероятностей классов тип данных целевых данных должен быть float. Обратите внимание: PyTorch не проверяет строго ограничения вероятностей для вероятностей классов, поэтому пользователь несёт ответственность за то, чтобы
targetсодержало корректные распределения вероятностей (подробнее см. раздел с примерами ниже). - Выходные данные: если reduction равен ‘none’, форма может быть , или в зависимости от формы входных данных. В противном случае результат является скаляром.
где — размер пакета.
Примеры
>>> torch.manual_seed(283) >>> # Example of target with class indices >>> loss = nn.LinearCrossEntropyLoss(5, 10, out_features=(4, 3)) >>> input = torch.randn(2, 5, requires_grad=True) >>> target = torch.randint(0, 10, (2, 4, 3)) >>> output = loss(input, target) >>> output.backward() >>> >>> # Example of target with class probabilities >>> input = torch.randn(2, 5, requires_grad=True) >>> target = torch.randn(2, 10, 4, 3).softmax(dim=1) >>> output = loss(input, target) >>> output.backward()
-
forward(input, target)[source] -
Выполняет прямой проход.
- Тип возвращаемого значения:
© 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.LinearCrossEntropyLoss.html