测试代码:
import torch import torch.nn as nn import math m = nn.Sigmoid() loss = nn.BCELoss(size_average=False, reduce=False) input = torch.randn(3, requires_grad=True) target = torch.empty(3).random_(2) lossinput = m(input) output = loss(lossinput, target) print("输入值:") print(lossinput) print("输出的目标值:") print(target) print("计算loss的结果:") print(output) print("自己计算的第一个loss:") print(-(target[0]*math.log(lossinput[0])+(1-target[0])*math.log(1-lossinput[0])))
输出为:
输入值:
tensor([ 0.6682, 0.6042, 0.7042])
输出的目标值:
tensor([ 0., 1., 1.])
计算loss的结果:
tensor([ 1.1032, 0.5038, 0.3506])
自己计算的第一个loss:
tensor(1.1032)