Spec-Zone.ru › PyTorch 2.14

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) – Количество классов, CC.
  • out_features (tuple[int], необязательный) – задаёт размеры (d1,d2,...,dK)(d_1, d_2, ..., d_K) для функции потерь 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 для компьютерного зрения. По умолчанию: 0.00.0.
  • options (LinearCrossEntropyOptions, необязательный) – Задаёт параметры стратегии разбиения на блоки; подробнее см. LinearCrossEntropyOptions. Чтобы включить эталонную реализацию linear_cross_entropy без разбиения на блоки, используйте options=None. Примечание: передача значения None options делает модуль несовместимым с torch.jit.script(); см. примечание ниже.

Предупреждение

При использовании None options путь с разбиением на блоки потребляет предварительно вычисленные градиенты на месте, поэтому любой повторный вызов 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().

Форма:
  • Входные данные: форма (infeatures)(in_features), (N,infeatures)(N, in_features).
  • Целевые данные: если содержат индексы классов, форма ()(), (N)(N) или (N,∗outfeatures)(N, *out_features), при этом каждое значение должно находиться в диапазоне [0,C)[0, C). При использовании индексов классов тип данных целевых данных должен быть long. Если целевые данные содержат вероятности классов, их форма должна быть (C)(C) или (N,C,∗outfeatures)(N, C, *out_features), а каждое значение должно находиться в диапазоне [0,1][0, 1]. Это означает, что при использовании вероятностей классов тип данных целевых данных должен быть float. Обратите внимание: PyTorch не проверяет строго ограничения вероятностей для вероятностей классов, поэтому пользователь несёт ответственность за то, чтобы target содержало корректные распределения вероятностей (подробнее см. раздел с примерами ниже).
  • Выходные данные: если reduction равен ‘none’, форма может быть ()(), (N)(N) или (N,∗outfeatures)(N, *out_features) в зависимости от формы входных данных. В противном случае результат является скаляром.

где NN — размер пакета.

Примеры

>>> 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]

Выполняет прямой проход.

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

Tensor

© 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

Spec-Zone.ru

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