损失函数之NLLLoss和CrossEntropyLoss

import torch
import torch.nn as nn

input = torch.randn(3, 3)      # 理解为每一行对应一张图片(🐖🐱🐕3分类,所以是3行3列)
target = torch.tensor([0, 2, 1])    # 真实标签
sm = nn.Softmax(dim=1)               # 转化为0~1之间,概率
loss = nn.NLLLoss()                
# 注意此处需要将类实例化,不可直接写为nn.NLLLoss(torch.log(sm(input)), target)
loss_value = loss(torch.log(sm(input)), target)  
# log是将(0~1)之间的概率P转化之(-∞~0),可以理解为P越大,loss越小,P越小loss越大
print(loss_value)
loss = nn.CrossEntropyLoss()
loss_value = loss(input, target)
print(loss_value)

>>>tensor(1.7419)
>>>tensor(1.7419)

两者输出结果一致,可以看出交叉熵损失将softmax-log-损失计算过程进行了合并,简化了计算。

损失计算:torch.log(sm(input))的输出与target对应的值拿出来,去掉负号,再求平均值的过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值