代码如下:

import torchlogits = torch.randn(3,4,requires_grad=True)
labels = torch.LongTensor([1,0,2])
print('logits={}, labels={}'.format(logits,labels))# 直接计算交叉熵(cross entropy loss)
def calc_ce_loss1(logits, labels):ce_loss = torch.nn.CrossEntropyLoss()loss = ce_loss(logits, labels)return loss# 分解计算交叉熵(cross entropy loss = log softmax + nll loss)
def calc_ce_loss2(logits, labels):log_softmax = torch.nn.LogSoftmax(dim=1)nll_loss = torch.nn.NLLLoss()logits_ls = log_softmax(logits)loss = nll_loss(logits_ls, labels)return lossloss1 = calc_ce_loss1(logits, labels)
print('loss1={}'.format(loss1))
loss2 = calc_ce_loss2(logits, labels)
print('loss2={}'.format(loss2))# 增加 temperature
temperature = 0.05
logits_t = logits / temperature
loss1 = calc_ce_loss1(logits_t, labels)
print('t={}, loss1={}'.format(temperature, loss1))
loss2 = calc_ce_loss2(logits_t, labels)
print('t={}, loss2={}'.format(temperature, loss2))temperature = 2
logits_t = logits / temperature
loss1 = calc_ce_loss1(logits_t, labels)
print('t={}, loss1={}'.format(temperature, loss1))
loss2 = calc_ce_loss2(logits_t, labels)
print('t={}, loss2={}'.format(temperature, loss2))

输出如下:

logits=tensor([[-0.7441, -2.3802, -0.1708,  0.5020],[ 0.3381, -0.3981,  2.2979,  0.6773],[-0.5372, -0.4489, -0.0680,  0.4889]], requires_grad=True), labels=tensor([1, 0, 2])
loss1=2.399930000305176
loss2=2.399930000305176
t=0.05, loss1=35.99229431152344
t=0.05, loss2=35.99229431152344
t=2, loss1=1.8117588758468628
t=2, loss2=1.8117588758468628

cross entropy loss = log softmax + nll loss相关推荐

  1. 关于交叉熵(Cross Entropy)与Softmax

    目录 写在前面 KL散度 交叉熵 Softmax 交叉熵与Softmax的关系 交叉熵损失 Softmax的求导 堆叠+向量化 其他关于Softmax函数的问题 赠品 写在前面 Softmax.交叉熵 ...

  2. 卷积神经网络系列之softmax,softmax loss和cross entropy

    全连接层到损失层间的计算 先理清下从全连接层到损失层之间的计算. 这张图的等号左边部分就是全连接层做的事,W是全连接层的参数,我们也称为权值,X是全连接层的输入,也就是特征. 从图上可以看出特征X是N ...

  3. 快速理解binary cross entropy 二元交叉熵

    Binary cross entropy 二元交叉熵是二分类问题中常用的一个Loss损失函数,在常见的机器学习模块中都有实现.本文就二元交叉熵这个损失函数的原理,简单地进行解释. 首先是二元交叉熵的公 ...

  4. pytorch:交叉熵(cross entropy)

    1.entropy entropy中文叫做熵,也叫不确定性,某种程度上也叫惊喜度(measure of surprise) = 如果p(x)采用0-1分部,那么entropy=1log1=0 而对于e ...

  5. 卷积神经网络系列之softmax,softmax loss和cross entropy的讲解

    我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等.虽然现在已经开源了很多深度学习框架(比如MxNet,Caf ...

  6. softmax,softmax loss和cross entropy

    我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等.虽然现在已经开源了很多深度学习框架(比如MxNet,Caf ...

  7. 人脸识别-Loss-2010:Softmax Loss(Softmax激活函数 + “交叉熵损失函数”)【样本3真实标签为c_5,则样本3的损失:loss_3=-log(\hat{y}_5^3)】

    一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等. 全连接层:等号左边部分就是全连接层做的事, W W W 是全连接层的参数,我们也称为权值, X X X 是全连接层的输 ...

  8. 目标检测分类损失函数——Cross entropy、Focal loss

    一.Cross Entropy Loss 交叉熵是用来判定实际的输出与期望的输出的接近程度,刻画的是实际输出与期望输出的距离,也就是交叉熵的值越小,两个概率分布就越接近. 1. CE Loss的定义 ...

  9. Dice Loss,balanced cross entropy,Focal Loss

    Dice Loss Dice系数是一种集合相似度度量函数,取值范围在[0,1]:s=2∣X∩Y∣∣X∣+∣Y∣s=\frac{2|X\cap Y|}{|X|+|Y|}s=∣X∣+∣Y∣2∣X∩Y∣​其 ...

最新文章

  1. 北京大学 李胜 计算机,计算机科学技术系汪国平-李胜团队在虚拟现实领域取得系列进展...
  2. 沈向洋、华刚:读科研论文的三个层次、四个阶段与十个问题
  3. python requests 爬取数据
  4. 数据挖掘过程中:数据预处理
  5. js正则贪婪模式_JavaScript正则表达式迷你书之贪婪模式-学习笔记
  6. Python爬虫之旅_高性能异步爬虫
  7. redis如何设置定时过期_redis补充6之Redis 设置过期时间
  8. JEECG商业版本授权说明(仅限企业用户)
  9. php 删除字符前缀,thinkphp3.2.3如何删除同一前缀的缓存(File)
  10. idea svn 的使用----转载,挺好的
  11. python for 加速_适合练习的10个Python项目,每个项目都不到500行代码
  12. Python cx_Oracle执行的sql字符串拼接含分号导致报“ORA-01756“引号内的字符串没有正确结束
  13. Eclipse SVN历史乱码问题
  14. python ctype_Python中用ctype库
  15. 高动态范围(HDR)渲染——最新中文手册
  16. itellyou操作系统,office等软件的很全的下载站
  17. “云脑启智 开源赋能”2021年度AI盛会召开 PNEdit赋能人工智能产业发展
  18. Android学习别“走弯路”,android开发计算器课程设计
  19. Android学习之Ubuntu12.04
  20. Painy's World 重写以及 杀人速写重写

热门文章

  1. 沉浮云播服务器维护,沉浮云播1.6修复网友分享.apk
  2. Runas命令:能让域用户/普通User用户以管理员身份运行指定程序。
  3. 邮票的孔怎么做出来的_邮票怎么做防潮工作,防潮柜有用吗【中华古画古物邮票吧】...
  4. EC20使用笔记MQTT
  5. 2013新建项目闪退_轮胎裂解炼油项目能审批吗
  6. A-Softmax的总结及与L-Softmax的对比——SphereFace 1
  7. 如何使用字体图标做一个淘宝购物车案例
  8. 微信小程序:长按图片识别二维码
  9. 渐开线齿轮传动中心距的可分性
  10. 80C51汇编语言指令格式,80C51汇编语言指令格式中的非必须项有()。 A.标号 B.操作码 C.操作数 D.注释...