【pytorch损失函数(5)】nn.NLLLoss, negative log likelihood loss,负对数似然损失

nn.NLLLoss

NLLLoss: negative log likelihood loss,负对数似然损失。

公式为: ℓ ( x , y ) = L = { l 1 , … , l N } ⊤ , l n = − x n y n \ell(x, y) = L = \{l_1,\dots,l_N\}^\top, \quad l_n = - x_ny_n\quad (x,y)=L={l1,,lN},ln=xnyn

确实没搞清楚这个公式跟对数有什么关系,看公式就是取每行对应列别的值

import torch
# 预测值
predict = torch.Tensor([[0.5796, 0.4403, 0.9087],
                        [-1.5673, -0.3150, 1.6660]])
# 真实值
target = torch.tensor([0, 2])

result = 0
for i, j in enumerate(range(target.shape[0])):
    # 分别取出0.5796和1.6660
    # 也就是log_soft_out[0][0]和log_soft_out[1][2]
    result -= predict[i][target[j]]
print(result / target.shape[0])
# tensor(-1.1228)

loss = torch.nn.NLLLoss()
print(loss(predict, target))
# tensor(-1.1228)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值