CrossEntropyLoss
-
class torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean', label_smoothing=0.0)[source] -
Этот критерий вычисляет потерю кросс-энтропии между входными логами и целевыми значениями.
Он полезен при обучении задачи классификации с
Cклассами. Если предоставлен, необязательный аргументweightдолжен быть одномернымTensor, присваивающим вес каждому из классов. Это особенно полезно, когда у вас несбалансированный обучающий набор.Ожидается, что
inputбудет содержать ненормализованные логарифмы для каждого класса (которыеnotне обязаны быть положительными или суммироваться до 1 в общем случае).inputдолжен быть тензором размера для непакетного входа, или с дляK-мерного случая. Последний полезен для входных данных более высокой размерности, например, для вычисления потери кросс-энтропии на каждый пиксель для 2D изображений.Ожидаемый
targetдля этого критерия должен содержать:-
Индексы классов в диапазоне , где — количество классов; если
ignore_indexуказан, эта потеря также принимает этот индекс класса (этот индекс необязательно должен быть в диапазоне классов). Несводимая (т. е. соreduction, установленным на'none') потеря для этого случая может быть описана следующим образом:где — вход, — целевое значение, — вес, — количество классов, а охватывает размер мини-пакета, а также для
K-мерного случая. Еслиreductionне'none'(по умолчанию'mean'), тоОбратите внимание, что этот случай эквивалентен применению
LogSoftmaxк входу, за которым следуетNLLLoss.
-
-
Вероятности для каждого класса; полезно, когда требуется метки, выходящие за рамки одного класса на элемент мини-пакета, например, для смешанных меток, сглаживания меток и т. д. Несведённая (т. е. с
reductionустановленным в'none') потеря в этом случае может быть описана как:где — входные данные, — целевые значения, — вес, — число классов, а охватывает измерение мини-пакета, а также для случая размерности
K. Еслиreductionне равно'none'(по умолчанию'mean'), то
Примечание
Производительность этого критерия, как правило, выше, когда
targetсодержит индексы классов, так как это позволяет оптимизировать вычисления. Рассмотрите возможность предоставленияtargetтолько как вероятностей классов, если метка единственного класса на элемент мини-пакета слишком ограничивает.- Параметры
-
-
weight (Tensor, необязательно) – ручной вес перемасштабирования, присваиваемый каждому классу. При указании должен быть тензором размера
C -
size_average (bool, необязательно) – устаревшее (см.
reduction). По умолчанию потери усредняются по каждому элементу потерь в пакете. Обратите внимание, что для некоторых потерь есть несколько элементов на образец. Если полеsize_averageустановлено вFalse, потери суммируются для каждого мини-пакета. Игнорируется, когдаreduceравноFalse. Значение по умолчанию:True -
ignore_index (int, необязательно) – Указывает целевое значение, которое игнорируется и не вносит вклад в градиент входа. Когда
size_averageравноTrue, потеря усредняется по целевым значениям, которые не игнорируются. Обратите внимание, чтоignore_indexприменимо только в том случае, если цель содержит индексы классов. -
reduce (bool, необязательно) – устаревшее (см.
reduction). По умолчанию потери усредняются или суммируются по наблюдениям для каждого мини-пакета в зависимости отsize_average. КогдаreduceравноFalse, возвращает потерю на элемент мини-пакета вместо этого и игнорируетsize_average. Значение по умолчанию:True -
reduction (str, необязательно) – Указывает операцию сокращения, применяемую к выходу:
'none'|'mean'|'sum'.'none': сокращение не применяется,'mean': вычисляется взвешенное среднее значение выходных данных,'sum': выходные данные суммируются. Примечание:size_averageиreduceв процессе устаревания, и в данный момент указание одного из этих двух аргументов переопределяетreduction. Значение по умолчанию:'mean' - label_smoothing (float, необязательно) – значение в диапазоне [0.0, 1.0]. Указывает степень сглаживания при вычислении потери, где 0.0 означает отсутствие сглаживания. Целевые значения становятся смесью исходного фактического значения и равномерного распределения, как описано в Rethinking the Inception Architecture for Computer Vision. Значение по умолчанию: .
-
weight (Tensor, необязательно) – ручной вес перемасштабирования, присваиваемый каждому классу. При указании должен быть тензором размера
-
- Форма:
-
- Вход: Форма , или с в случае
K-мерной функции потерь. - Цель: Если содержит индексы классов, форма , или с в случае K-мерной функции потерь, где каждое значение должно быть в диапазоне . Если содержит вероятности классов, форма такая же, как и вход, и каждое значение должно быть в диапазоне .
- Выход: Если уменьшение равно ‘none’, форма , или с в случае K-мерной функции потерь, в зависимости от формы входных данных. В противном случае, скаляр.
где:
- Вход: Форма , или с в случае
Примеры:
>>> # Example of target with class indices >>> loss = nn.CrossEntropyLoss() >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.empty(3, dtype=torch.long).random_(5) >>> output = loss(input, target) >>> output.backward() >>> >>> # Example of target with class probabilities >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.randn(3, 5).softmax(dim=1) >>> output = loss(input, target) >>> output.backward()
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.CrossEntropyLoss.html