NLLLoss
首先,简单地谈下我对NLLLoss损失函数的理解。
经过上面的计算我们知道, 计算出来的值范围在 ,值的含义表示对应类别的概率。也就是说,每行中最接近于 的值对应的类别,就是该图片所属概率最大的类别。这时,目标是最大化概率。但在机器学习中,通常最小化某个函数值,因此,对概率值再进行一次 变换。经过 变换之后,最大概率值即为最接近于 的值。其它概率值经 变换之后,均为小于 的实值。为了满足最小化的条件, 函数通常会取个负号( )。此时,若实际标签张量在模型输出结果 的对应位置的值越接近0,则具有越小的损失值;否则,损失值越大。
举例: 假设实际标签张量为 (pig, pig, cat, dog),而模型输出结果为 。因此,直接使用NLLLoss损失函数计算预测结果和Real Label之间的损失值如下所示。


>>>logsfm(output)
tensor([[-0.9718, -1.4177, -0.9694],[-1.1788, -1.0826, -1.0395],[-0.8300, -1.1571, -1.3881],[-1.0693, -1.3454, -0.9255]])
>>> loss = nn.NLLLoss()
>>> target = torch.tensor([2, 2, 0, 1])
>>> loss(logsfm(output), target)
tensor(1.0461)

Of course, 实际标签张量为 ,因此我们可以手动计算NLLLoss损失函数对应的损失值。显然,两者的计算结果是一致的。

>>> loss = logsfm(output)[0, 2] + logsfm(output)[1, 2] + logsfm(output)[2, 0] + logsfm(output)[3, 1]
>>> loss
tensor(-4.1843)
>>> -loss / logsfm(output).size()[0]
tensor(1.0461)

参考链接

Pytorch中NLLLoss相关推荐

  1. pytorch中CrossEntropyLoss和NLLLoss的区别与联系

    pytorch中CrossEntropyLoss和NLLLoss的区别与联系 CrossEntropyLoss和NLLLoss主要是用在多分类问题的损失函数,他们两个既有不同,也有不浅的联系.先分别看 ...

  2. pytorch中的NLLLoss和CrossEntropy

    直接计算CrossEntropy import torch import torch.nn.functional as F 先按照流程手动计算CrossEntropy class_dim = 3 z ...

  3. Pytorch中的分类损失函数比较NLLLoss与CrossEntropyLoss

    参考来源,仅作为学习笔记 二分类 对于一个二分类问题,比如我们有一个样本,有两个不同的模型对他进行分类,那么它们的输出都应该是一个二维向量,比如: 模型一的输出为:pred_y1=[0.8,0.2] ...

  4. 机器学习花朵图像分类_在PyTorch中使用转移学习进行图像分类

    想了解更多好玩的人工智能应用,请关注公众号"机器AI学习 数据AI挖掘","智能应用"菜单中包括:颜值检测.植物花卉识别.文字识别.人脸美妆等有趣的智能应用.. ...

  5. 损失函数-负对数似然和交叉熵(Pytorch中的应用)

    文章目录 1.负对数似然损失函数 1.1.似然 1.2.似然函数 1.3.极大似然估计 1.4.对数似然 1.5.负对数似然 1.6.pytorch中的应用 2.交叉熵损失函数 2.1.信息量 2.2 ...

  6. pytorch中的二分类及多分类交叉熵损失函数

    本文主要记录一下pytorch里面的二分类及多分类交叉熵损失函数的使用. import torch import torch.nn as nn import torch.nn.functional a ...

  7. pytorch中调整学习率的lr_scheduler机制

    pytorch中调整学习率的lr_scheduler机制 </h1><div class="clear"></div><div class ...

  8. pytorch中如何处理RNN输入变长序列padding

    一.为什么RNN需要处理变长输入 假设我们有情感分析的例子,对每句话进行一个感情级别的分类,主体流程大概是下图所示: 思路比较简单,但是当我们进行batch个训练数据一起计算的时候,我们会遇到多个训练 ...

  9. PyTorch中的MIT ADE20K数据集的语义分割

    PyTorch中的MIT ADE20K数据集的语义分割 代码地址:https://github.com/CSAILVision/semantic-segmentation-pytorch Semant ...

最新文章

  1. 理解在javascript中的内存泄露
  2. seq2seq里的数学
  3. 基础数学:关于二次无理数
  4. AS3 CookBook学习整理(十七)
  5. redis 哨兵 异步_redis 使用历程
  6. exar 带容隔离_带有美白功效的6款隔离霜 美白隔离两不误
  7. linux 7.2中文命令,CentOS7如何支持中文显示
  8. 带你了解 HBase 数据模型和 HBase 架构
  9. “不懂 CPU 工作原理又如何,直接用代码模拟一个!”
  10. Oracle开源Fn,加入Serverless之争
  11. linux命令:linux集群系列之一---LVS类型解析
  12. bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)
  13. 菜鸟的MySQL学习笔记(二)
  14. 如何破解qq仅三天可见
  15. python通信系统仿真_Python与V-REP联合仿真
  16. android ios emoji兼容,web端怎么和移动端emoji表情兼容
  17. 浅谈进销存管理-【采购篇】
  18. 单端正激(Forward)变换器的工作原理CCM模式下电路设计参数计算
  19. 什么是Promise?Promise有什么好处
  20. 2.一脚踹进ViT——Attention机制原理及实现

热门文章

  1. Go语言垃圾回收(Garbage Collection)
  2. java毕业设计基于精细化考核的离散数学课程教学目标达成系统Mybatis+系统+数据库+调试部署
  3. CMD下启动与关闭程序
  4. cad提供的坐标转换
  5. 掌控机遇秘诀!多位百万富翁的创业真经!
  6. Win10 最有效去快捷方式 盾牌的脚本 不接受任何反驳任何异议
  7. dwa的区别 teb_dwa杨算法解析1
  8. mysql数据库主键如何设计
  9. 广和通入选中国移动5G物联网开放实验室首批优选产品名录
  10. C语言中数据放在哪里