BCELoss
-
class torch.nn.modules.loss.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 (Tensor, optional) – вес для ручного масштабирования функции потерь каждого элемента пакета. Если задан, должен быть тензором размера
nbatch. -
size_average (bool, optional) – Устарел (см.
reduction). По умолчанию значения функции потерь усредняются по всем её элементам в пакете. Обратите внимание, что для некоторых функций потерь на один пример приходится несколько элементов. Если для поляsize_averageзадано значениеFalse, вместо этого значения функции потерь суммируются в каждом мини-пакете. Игнорируется, еслиreduceравноFalse. По умолчанию:True -
reduce (bool, optional) – Устарел (см.
reduction). По умолчанию значения функции потерь усредняются или суммируются по наблюдениям для каждого мини-пакета в зависимости отsize_average. ЕслиreduceравноFalse, возвращается значение функции потерь для каждого элемента пакета, аsize_averageигнорируется. По умолчанию:True -
reduction (str, optional) – Задаёт способ редукции выходного значения:
'none'|'mean'|'sum'.'none': редукция не применяется,'mean': сумма выходных значений делится на число элементов в выходном тензоре,'sum': выходные значения суммируются. Примечание:size_averageиreduceпостепенно выводятся из употребления; пока что указание любого из этих аргументов переопределяетreduction. По умолчанию:'mean'
-
weight (Tensor, optional) – вес для ручного масштабирования функции потерь каждого элемента пакета. Если задан, должен быть тензором размера
- Форма:
-
- Вход: , где означает любое число измерений.
- Целевое значение: , той же формы, что и входной тензор.
- Выход: скаляр. Если
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()
-
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.modules.loss.BCELoss.html