交叉熵损失函数和NLL_loss
目录
1.交叉熵损失函数的计算过程:
2.交叉熵损失函数的公式:
3.NLL loss(负对数似然函数损失)
4.NLL_Loss和交叉熵损失函数关系
1.交叉熵损失函数的计算过程:
交叉熵损失函数经常用于分类问题中,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数,此外,由于交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和sigmoid(或softmax)函数一起出现。
我们用神经网络最后一层输出的情况,来看一眼整个模型预测、获得损失和学习的流程:
- 神经网络最后一层得到每个类别的得分scores(也叫logits);
- 该得分经过sigmoid(或softmax)函数获得概率输出;
- 模型预测的类别概率输出与真实类别的one hot形式进行交叉熵损失函数的计算。
2.交叉熵损失函数的公式:
参考:https://zhuanlan.zhihu.com/p/35709485
3.NLL loss(负对数似然函数损失)定义和pytorch实现
但是pytorch中的NLL loss定义中却没有对score做log运算(仅对输入score做求和取负),因此官方文档要求,在使用nll_loss之前需要对score做log运算,这样计算出来的就是nll-loss原本的定义:
torch.nn.functional.nll_loss — PyTorch 1.11.0 documentation
并通过参数reduction 可以控制输出是否做“不做操作|平均|求和”
4.NLL_Loss和交叉熵损失函数关系
- 就数学上的严格定义而言,二者区别在于是否对score做softmax运算,即:
- 就pytorch的实现而言,二者的区别在于是否对score做log_foftmax运算(因为pytorch中NLL_Loss没有对score做log运算):
换句话说,在pytorch中,NLLLoss 的 输入 是一个对数概率向量和一个目标标签. 它不会为我们计算对数概率. 适合网络的最后一层是log_softmax. 损失函数 nn.CrossEntropyLoss() 与 NLLLoss() 相同, 唯一的不同是它为我们去做 softmax.
CrossEntropyLoss()=log_softmax() + NLLLoss()
其中,softmax()定义如下:
log_softmax()定义如下:
参考:损失函数——负对数似然_Pr4da的博客-CSDN博客_负对数似然损失函数
Pytorch详解NLLLoss和CrossEntropyLoss_豪哥123的博客-CSDN博客_nllloss
CrossEntropyLoss与NLLLoss的总结_街道口扛把子的博客-CSDN博客_f.nll_loss
交叉熵损失函数和NLL_loss相关推荐
- 深入理解Pytorch负对数似然函数(torch.nn.NLLLoss)和交叉熵损失函数(torch.nn.CrossEntropyLoss)
在看Pytorch的交叉熵损失函数torch.nn.CrossEntropyLoss官方文档介绍中,给出的表达式如下.不免有点疑惑为何交叉熵损失的表达式是这个样子的 loss ( y , clas ...
- 交叉熵损失函数、修正Huber损失、极大似然估计、负对数似然、似然与交叉熵、KL散度
交叉熵损失函数.修正Huber损失.极大似然估计.负对数似然.似然与交叉熵.KL散度 目录
- 交叉熵损失函数的通用性(为什么深度学习DL普遍用它):预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 “ 惩罚 ” 越大,而且是非线性增大是一种类似指数增长的级别,结论:它对结果有引导性
交叉熵损失函数的通用性(为什么深度学习DL普遍用它):预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 " 惩罚 " 越大,而且是非线性增大是一种类似指数增长的级别,结 ...
- LESSON 10.110.210.3 SSE与二分类交叉熵损失函数二分类交叉熵损失函数的pytorch实现多分类交叉熵损失函数
在之前的课程中,我们已经完成了从0建立深层神经网络,并完成正向传播的全过程.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具AutoGrad ...
- 交叉熵损失函数分类_交叉熵损失函数
我们先从逻辑回归的角度推导一下交叉熵(cross entropy)损失函数. 从逻辑回归到交叉熵损失函数 这部分参考自 cs229-note1 part2. 为了根据给定的 预测 (0或1),令假设函 ...
- 损失函数|交叉熵损失函数
看完文章,希望你能顺利回答以下题目: 题目1:这个任务,你会使用什么损失函数? 题目2: 交叉熵表达式? 题目3:为什么使用交叉熵?能不能用MSE? 题 ...
- 语义分割损失函数系列(1):交叉熵损失函数
最近一直在做一些语义分割相关的项目,找损失函数的时候发现网上这些大佬的写得各有千秋,也没说怎么用,在此记录一下自己在训练过程中使用损失函数的一些心得.本人是使用的Pytorch框架,故这一系列都会基于 ...
- 深度学习中softmax交叉熵损失函数的理解
1. softmax层的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节 ...
- softmax函数与交叉熵损失函数
本文主要介绍了当前机器学习模型中广泛应用的交叉熵损失函数与softmax激励函数. 这个损失函数主要应用于多分类问题,用于衡量预测值与实际值之间的相似程度. 交叉熵损失函数定义如下: LCE(y^,y ...
最新文章
- ATS缓存中间层介绍
- 企业有需求,那么站点就应该不断完善功能
- Python配置pip国内镜像源
- ubuntu16.04安装mysql-workbench
- [NewLife.XCode]脏数据
- node:爬虫爬取网页图片
- 真的有无人工厂吗,IoT 怎么在产业界落地?| 赠书
- (一)Redis初学教程之安装篇
- 《OSPF网络设计解决方案(第2版)》一1.4 TCP/IP协议簇
- C语言实现线性表的链式存储结构
- uni-app实现android,ios打包过程详解
- 列表展示:RecyclerView多条目
- JavaScript入门案例
- 计算机无法复制大文件格式,U盘复制文件电脑提示文件过大无法复制怎么解决?...
- TCP/IP网络编程之多进程服务端(二)
- Geforce Game Ready驱动程序无法继续安装
- 逆向初学者做题记录3.28
- Registry私有仓库搭建及认证【转】
- Qt:创建文件夹QDir
- jquery竖向走马灯_jquery实现页面百叶窗走马灯式翻滚显示效果的方法_jquery
热门文章
- 详解线程锁、进程锁以及分布式锁,开发过程中解决的具体问题
- MRPII/ERP对企业经营方式转变的影响(转)
- nginx文件服务器判断文件是否存在,nginx try_files指令判断文件是否存在实例
- 数据库课程设计——宾馆管理系统UML状态图
- 在亚洲市场进行夜间交易: 如何保持盈利
- 《MATLAB SYNTAX》第9章 三维图形可视化
- mysql fifo 批量加载_使用pt-fifo-split 工具往mysql插入海量数据
- xss payload收集
- 论文笔记Neural Ordinary Differential Equations
- 射频了解一丢丢【2】