官方链接看这里
由于中文版的挂了,这里先放英文版的
这里讲的是默认对一个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>)