Pytorch中NLLLoss
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相关推荐
- pytorch中CrossEntropyLoss和NLLLoss的区别与联系
pytorch中CrossEntropyLoss和NLLLoss的区别与联系 CrossEntropyLoss和NLLLoss主要是用在多分类问题的损失函数,他们两个既有不同,也有不浅的联系.先分别看 ...
- pytorch中的NLLLoss和CrossEntropy
直接计算CrossEntropy import torch import torch.nn.functional as F 先按照流程手动计算CrossEntropy class_dim = 3 z ...
- Pytorch中的分类损失函数比较NLLLoss与CrossEntropyLoss
参考来源,仅作为学习笔记 二分类 对于一个二分类问题,比如我们有一个样本,有两个不同的模型对他进行分类,那么它们的输出都应该是一个二维向量,比如: 模型一的输出为:pred_y1=[0.8,0.2] ...
- 机器学习花朵图像分类_在PyTorch中使用转移学习进行图像分类
想了解更多好玩的人工智能应用,请关注公众号"机器AI学习 数据AI挖掘","智能应用"菜单中包括:颜值检测.植物花卉识别.文字识别.人脸美妆等有趣的智能应用.. ...
- 损失函数-负对数似然和交叉熵(Pytorch中的应用)
文章目录 1.负对数似然损失函数 1.1.似然 1.2.似然函数 1.3.极大似然估计 1.4.对数似然 1.5.负对数似然 1.6.pytorch中的应用 2.交叉熵损失函数 2.1.信息量 2.2 ...
- pytorch中的二分类及多分类交叉熵损失函数
本文主要记录一下pytorch里面的二分类及多分类交叉熵损失函数的使用. import torch import torch.nn as nn import torch.nn.functional a ...
- pytorch中调整学习率的lr_scheduler机制
pytorch中调整学习率的lr_scheduler机制 </h1><div class="clear"></div><div class ...
- pytorch中如何处理RNN输入变长序列padding
一.为什么RNN需要处理变长输入 假设我们有情感分析的例子,对每句话进行一个感情级别的分类,主体流程大概是下图所示: 思路比较简单,但是当我们进行batch个训练数据一起计算的时候,我们会遇到多个训练 ...
- PyTorch中的MIT ADE20K数据集的语义分割
PyTorch中的MIT ADE20K数据集的语义分割 代码地址:https://github.com/CSAILVision/semantic-segmentation-pytorch Semant ...
最新文章
- 理解在javascript中的内存泄露
- seq2seq里的数学
- 基础数学:关于二次无理数
- AS3 CookBook学习整理(十七)
- redis 哨兵 异步_redis 使用历程
- exar 带容隔离_带有美白功效的6款隔离霜 美白隔离两不误
- linux 7.2中文命令,CentOS7如何支持中文显示
- 带你了解 HBase 数据模型和 HBase 架构
- “不懂 CPU 工作原理又如何,直接用代码模拟一个!”
- Oracle开源Fn,加入Serverless之争
- linux命令:linux集群系列之一---LVS类型解析
- bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)
- 菜鸟的MySQL学习笔记(二)
- 如何破解qq仅三天可见
- python通信系统仿真_Python与V-REP联合仿真
- android ios emoji兼容,web端怎么和移动端emoji表情兼容
- 浅谈进销存管理-【采购篇】
- 单端正激(Forward)变换器的工作原理CCM模式下电路设计参数计算
- 什么是Promise?Promise有什么好处
- 2.一脚踹进ViT——Attention机制原理及实现