美文网首页
nll_loss是什么?原来是log_softmax的损失函数!

nll_loss是什么?原来是log_softmax的损失函数!

作者: Co酱_秋乏术 | 来源:发表于2023-01-16 10:56 被阅读0次

a = torch.Tensor([2, 3, 4])

# 使用 pytorch 内置的 softmax 函数计算

softmax = a.softmax(dim=0)

print( softmax)

# tensor([0.0900, 0.2447, 0.6652])

log_softmax()

使用 log_softmax 计算 softmax 的对数值,log_softmax(x) 等价于 log(softmax(x))

最终分类如果使用 log_softmax,损失函数需要使用 nll_loss(Negative Log Likelihood )。

nll_loss 损失函数的表达式为

相当于只取 log(softmax(x)) 预测结果向量 label 对应索引值的相反数。

log_softmax

log_softmax = a.log_softmax(dim=0)

print('-- log_softmax : ', log_softmax)

# tensor([-2.4076, -1.4076, -0.4076])

nll_loss

print(manual_log_softmax.unsqueeze(1))

# tensor([[-2.4076], [-1.4076], [-0.4076]])

nll_loss = F.nll_loss(manual_log_softmax.unsqueeze(1), torch.LongTensor([0, 0, 0]), reduction='none')

print('-- nll_loss : ', nll_loss)

# tensor([2.4076, 1.4076, 0.4076])



cross_entropy_loss

log_softmax 和 nll_loss 经常组合使用,常见于各种分类算法

cross_entropy_loss 底层实际也是调用的 log_softmax 和 nll_loss。该算子一步到位的将 softmax、log 及 nll 操作全部完成。

b = torch.Tensor([ [1, 2], [0.5, 3], [0.9, 4] ])

loss = nn.CrossEntropyLoss()

l1 = loss(b, torch.LongTensor([0, 1, 0]))

print('-- loss : ', l1)

# tensor(1.5121)

相关文章

  • Pytorch中的分类问题损失函数

    前言:pytorch中有几个非常容易搞混淆的函数,它们是softmax和log_softmax,CrossEntr...

  • Tensorflow | 踩坑纪实

    1 计算损失函数时,logits参数是什么 损失函数的计算涉及到Tensorflow的两个常用函数: 当我初次使用...

  • 深度学习策略之损失函数(Loss Function OR Cos

    image.png 一、损失函数是什么,有什么用? 损失函数,英文Loss Function 或者 Cost Fu...

  • 机器学习:常见的损失函数

    损失函数简要介绍 0-1损失 绝对值损失 log对数损失函数 平方损失函数 指数损失函数 Hinge损失函数 损失...

  • (4)损失函数

    损失函数用来表示输出与实际值的差距。常用的损失函数为0-1损失函数、平方损失函数、绝对损失函数、对数损失函数、交叉...

  • 【深度学习】

    1, 两个重要的函数:得分函数和损失函数损失函数: hinge损失,softmax 损失。hinge损失: max...

  • 各机器学习模型的目标函数

    目标函数和损失函数的区别 损失函数:模型拟合的越好,损失应该越小; 目标函数:优化的目标,可以是“损失函数”或者“...

  • 损失函数概述

    常用的损失函数 1.L1损失(绝对损失函数) 和 L2 损失(平方损失函数) L1范数损失函数,也被称为 最小绝对...

  • 06.神经网络学习-2

    神经网络的优化目标 数学目标 不论损失函数是什么形式,神经网络的优化目标都是使得损失函数最小化。对于均方误差函数和...

  • 代价函数

    代价函数 1、代价函数是什么?   理解的代价函数就是用于找到最优解的目的函数,这也是代价函数的作用。 损失函数(...

网友评论

      本文标题:nll_loss是什么?原来是log_softmax的损失函数!

      本文链接:https://www.haomeiwen.com/subject/qfrocdtx.html