官方鏈接看這裏
由於中文版的掛了,這裏先放英文版的
這裏講的是默認對一個batch裏面的數據做二元交叉熵並且求平均。
參數說明
- weight: 給每個batch元素的權重,一般沒用
- size_average: 默認爲True
- reduce: True/False 默認爲True,對每個minibatch做
- reduction: 用的比較多的是這個,若用了2.3可能導致4失效。
shape描述
input與target都是一樣的size
官方實例
>>> 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()
運行結果
import torch.nn as nn
m = nn.Sigmoid()
loss = nn.BCELoss()
input = torch.randn(3, requires_grad=True)
input
Out[21]: tensor([-0.6212, -0.9684, 0.6923], requires_grad=True)
target = torch.empty(3)
target
Out[23]: tensor([-1.5901e-30, 4.5907e-41, 0.0000e+00])
target = target.random_(2)
target
Out[25]: tensor([1., 0., 1.])
output = loss(m(input), target)
output
Out[27]: tensor(0.5929, grad_fn=<BinaryCrossEntropyBackward>)