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 (Tensor, необязательно) – ручное перемасштабирование весов, присваиваемых к потерям каждого элемента пакета. Если задано, должно быть тензором размера
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 (Tensor, необязательно) – ручное перемасштабирование весов, присваиваемых к потерям каждого элемента пакета. Если задано, должно быть тензором размера
- Форма:
-
- Вход: , где обозначает любое количество измерений.
- Цель: , та же форма, что и вход.
- Вывод: скаляр. Если
reductionравно'none', то , та же форма, что и вход.
Примеры:
>>> m = nn.Sigmoid() >>> loss = nn.BCELoss() >>> input = torch.randn(3, requires_grad=True) >>> target = torch.empty(3).random_(2) >>> 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/1.13/generated/torch.nn.BCELoss.html