Spec-Zone.ru › PyTorch 2.14

BCELoss

class torch.nn.modules.loss.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean') [source]

Создаёт критерий, измеряющий бинарную перекрёстную энтропию между целевыми значениями и входными вероятностями:

Нередуцированную функцию потерь (то есть с reduction, установленным в 'none') можно записать следующим образом:

ℓ(x,y)=L={l1,…,lN}⊤,ln=−wn[yn⋅log⁡xn+(1−yn)⋅log⁡(1−xn)],\ell(x, y) = L = \{l_1,\dots,l_N\}^\top, \quad l_n = - w_n \left[ y_n \cdot \log x_n + (1 - y_n) \cdot \log (1 - x_n) \right],

где NN — размер пакета. Если reduction не равно 'none' (по умолчанию 'mean'), то

ℓ(x,y)={mean⁡(L),если reduction=‘mean’;sum⁡(L),если reduction=‘sum’.\ell(x, y) = \begin{cases} \operatorname{mean}(L), & \text{if reduction} = \text{`mean';}\\ \operatorname{sum}(L), & \text{if reduction} = \text{`sum'.} \end{cases}

Это используется для измерения ошибки реконструкции, например в автоэнкодере. Обратите внимание, что целевые значения yy должны быть числами от 0 до 1.

Обратите внимание: если xnx_n равно 0 или 1, один из логарифмических членов в приведённом выше уравнении функции потерь будет математически не определён. PyTorch присваивает log⁡(0)=−∞\log (0) = -\infty значение −∞, поскольку lim⁡x→0log⁡(x)=−∞\lim_{x\to 0} \log (x) = -\infty. Однако бесконечное значение в уравнении функции потерь нежелательно по нескольким причинам.

Во-первых, если yn=0y_n = 0 или (1−yn)=0(1 - y_n) = 0, то мы умножим 0 на бесконечность. Во-вторых, если значение функции потерь бесконечно, то бесконечным будет и член в градиенте, поскольку lim⁡x→0ddxlog⁡(x)=∞\lim_{x\to 0} \frac{d}{dx} \log (x) = \infty. Из-за этого обратный проход BCELoss был бы нелинейным относительно xnx_n, и использовать его, например, для линейной регрессии было бы непросто.

Мы решили эту проблему, ограничив значения, выдаваемые логарифмической функцией 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'
Форма:
  • Вход: (∗)(*), где ∗* означает любое число измерений.
  • Целевое значение: (∗)(*), той же формы, что и входной тензор.
  • Выход: скаляр. Если 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]

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

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

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.modules.loss.BCELoss.html

Spec-Zone.ru

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