pytorch CrossEntropyLoss()计算

import torch
from torch.nn import CrossEntropyLoss

criterion = CrossEntropyLoss()
output = torch.tensor([[0.2, 0.8]])
target = torch.tensor([1])
loss = criterion(output, target)
print(loss)
y = torch.exp(torch.tensor(0.8)) / ((torch.exp(torch.tensor(0.8)) + torch.exp(torch.tensor(0.2))))
print(-torch.log(y))

假设一个二分类模型输出是属于对应两个类别的logits,目标值是对应的类别真值。在计算交叉熵时,pytorch封装的CrossEntropyLoss类对象会先对logits进行softmax激活,然后再进行交叉熵计算。
也就是在上面demo中,不回直接计算-ln(0.8) = 0.2231
而是先计算 exp(o.8)/(exp(0.8)+exp(0.2)) = 0.645656, 在计算-log(0.645656) = 0.43748795048588573
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值