import torch.nn.functional as F import torch input = torch.randn((3,2),requires_grad=True) target = torch.tensor([0,1,1]).long() loss = F.cross_entropy(input, target) ''' https://en.wikipedia.org/wiki/Cross_entropy 假设所要处理的是二分类问题,则使用cross entropy loss pytorch中的cross entropy函数在实现的时候: 是将F.log_softmax函数和nll_loss(non negative likelihood)函数的功能一起打包在F.cross_entropy中 计算交叉熵损失函数的时候,注意只会计算正确类别的损失值,并不包含错误类别 cross_entropy(x_i)=-log(P(correct)) ''' probability=F.softmax(input,dim=1) loss2=-torch.log(probability[0,0])-torch.log(probability[1,1])-torch.log(probability[2,1]) loss2/=3 print(loss,loss2) # tensor(1.2381, grad_fn=<NllLossBackward>) tensor(1.2381, grad_fn=<DivBackward0>)
cross entropy交叉熵损失函数只计算正确类别的损失,不计算错误类别
最新推荐文章于 2023-05-08 19:46:02 发布