CrossEntropyLoss
-
class torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean', label_smoothing=0.0)[source] -
Этот критерий вычисляет потерю кросс-энтропии между входными логами и целевыми значениями.
Он полезен при обучении задачи классификации с
Cклассами. Если указан, необязательный аргументweightдолжен быть 1DTensor, присваивающим вес каждому из классов. Это особенно полезно, когда у вас есть несбалансированный обучающий набор.Ожидается, что
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-мерной функции потерь, где каждое значение должно быть в пределах . Если содержатся вероятности классов, форма такая же, как у входа, и каждое значение должно быть в пределах .
- Вывод: если reduction = ‘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/1.13/generated/torch.nn.CrossEntropyLoss.html