栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pytorch中损失函数 NLLLOSS 和 CROSSENTROPYLOSS 的区别

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pytorch中损失函数 NLLLOSS 和 CROSSENTROPYLOSS 的区别

NLLLOSS 是 negative log likelihood loss 负对数似然损失函数,CROSSENTROPYLOSS 是交叉熵损失函数,它们都是用于多分类任务的损失函数,正如我在笔记中提到的,它们实际上是一样的,在 Pytorch 中这两者的区别就只在于接收的输入不同:

torch.nn.functional.cross_entropy 将 logits 作为输入(内部自动实现 log_softmax)
torch.nn.functional.nll_loss 将 log-probabilities (log-softmax) 作为输入

logits 即 log_softmax 层的输入,log-probabilities 即 Softmax 层的输出,也就是说:
C r o s s E n t r o p y L o s s = L o g S o f t m a x + N L L L o s s CrossEntropyLoss = LogSoftmax + NLLLoss CrossEntropyLoss=LogSoftmax+NLLLoss

实际代码的演示如下:

1、假设 Softmax 层的输入矩阵为 Z,其中每一行是一个训练示例:

2、将它们经过 Softmax 层,得到输出矩阵 smax

3、nll_loss 的输入为 smax 的对数,即 log_softmax;而 cross_entropy 的输入为 Z

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998446.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号