BCELoss
-
class torch.nn.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean')[source] -
Создаёт критерий, который измеряет бинарную кросс-энтропию между целевыми и входными вероятностями:
Несведённая (т.е. с
reductionустановленным в'none') функция потерь может быть описана как:где — размер пакета. Если
reductionне'none'(по умолчанию'mean'), тоЭто используется для измерения ошибки реконструции, например, в автокодировщике. Обратите внимание, что целевые значения должны быть числами от 0 до 1.
Обратите внимание, что если равно либо 0, либо 1, один из логарифмических членов в приведенном выше уравнении потерь будет математически неопределён. PyTorch выбирает установку , так как .
Однако бесконечное значение потерь нежелательно по нескольким причинам.
Во-первых, если или , то мы умножим 0 на бесконечность. Во-вторых, если у нас есть бесконечное значение потерь, то у нас также будет бесконечный член в градиенте, так как . Это сделало бы обратную функцию BCELoss нелинейной по отношению к , и её использование для линейной регрессии было бы затруднено.
Наш подход заключается в том, чтобы BCELoss обрезал выходные значения своей логарифмической функции так, чтобы они были не меньше -100. Таким образом, мы всегда можем иметь конечное значение потерь и линейную обратную функцию.
- Параметры
-
-
weight (Тензор, необязательно) – ручной коэффициент масштабирования, применяемый к потерям каждого элемента пакета. При указании должен быть тензором размером
nbatch. -
size_average (bool, необязательно) – Устаревший параметр (см.
reduction). По умолчанию потери усредняются по каждому элементу потерь в пакете. Обратите внимание, что для некоторых функций потерь есть несколько элементов на образец. Если полеsize_averageустановлено вFalse, то потери суммируются для каждого мини-пакета. Игнорируется, когдаreduceравенFalse. По умолчанию:True -
reduce (bool, необязательно) – Устаревший параметр (см.
reduction). По умолчанию потери усредняются или суммируются по наблюдениям для каждого мини-пакета в зависимости отsize_average. КогдаreduceравенFalse, возвращает потери на элемент пакета вместо этого и игнорируетsize_average. По умолчанию:True -
reduction (str, необязательно) – Указывает операцию сведения, применяемую к выводу:
'none'|'mean'|'sum'.'none': не будет применено сведения,'mean': сумма вывода будет разделена на количество элементов в выводе,'sum': вывод будет просуммирован. Примечание:size_averageиreduceв процессе устаревания, и пока что указание любого из них переопределитreduction. По умолчанию:'mean'
-
weight (Тензор, необязательно) – ручной коэффициент масштабирования, применяемый к потерям каждого элемента пакета. При указании должен быть тензором размером
- Форма:
-
- Вход: , где означает любое количество измерений.
- Цель: , та же форма, что и вход.
- Вывод: скаляр. Если
reductionравно'none', то , та же форма, что и вход.
Примеры:
>>> m = nn.Sigmoid() >>> loss = nn.BCELoss() >>> input = torch.randn(3, 2, requires_grad=True) >>> target = torch.rand(3, 2, requires_grad=False) >>> output = loss(m(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.BCELoss.html