DL - softmax、log_softmax、nll_loss、cross_entropy_loss
文章目录
- softmax
- log_softmax
- nll_loss
- cross_entropy_loss
关于 log_softmax
输出使用 log_softmax 计算 softmax 的对数值,log_softmax(x) 等价于 log(softmax(x))
如果使用 log_softmax,损失函数需要使用 nll_loss(Negative Log Likelihood )。
nll_loss 损失函数的表达式为 loss(predict,label)=−predictlabelloss(predict, label) = -predict_{label}loss(predict,label)=−predictlabel
相当于只取 log(softmax(x)) 预测结果向量 label 对应索引值的相反数。
softmax
a = torch.Tensor([2, 3, 4])# 使用 pytorch 内置的 softmax 函数计算
softmax = a.softmax(dim=0)
print('-- softmax : ', softmax)
# tensor([0.0900, 0.2447, 0.6652])# 根据公式自己算
manual_softmax = torch.pow(math.e, a)/torch.pow(math.e, a).sum()
print('-- manual_softmax : ', manual_softmax)
# tensor([0.0900, 0.2447, 0.6652]) 同上
log_softmax
log_softmax = a.log_softmax(dim=0)
print('-- log_softmax : ', log_softmax)
# tensor([-2.4076, -1.4076, -0.4076])manual_log_softmax = (torch.pow(math.e, a) / torch.pow(math.e, a).sum() ).log()
print('-- manual_log_softmax : ', manual_log_softmax)
# tensor([-2.4076, -1.4076, -0.4076]) 同上
nll_loss
print(manual_log_softmax.unsqueeze(1))
# tensor([[-2.4076], [-1.4076], [-0.4076]])nll_loss = F.nll_loss(manual_log_softmax.unsqueeze(1), torch.LongTensor([0, 0, 0]), reduction='none')
print('-- nll_loss : ', nll_loss)
# tensor([2.4076, 1.4076, 0.4076])# 多类别
tmp = torch.Tensor([[-2.4076, 4.52], [-1.4076, 3.42], [-0.4076, 0.123]
])tmp_index = torch.LongTensor([1, 1, 0])nll_loss1 = F.nll_loss(tmp, tmp_index, reduction='none')
print('-- nll_loss1 : ', nll_loss1)
# tensor([-4.5200, -3.4200, 0.4076])
cross_entropy_loss
log_softmax 和 nll_loss 经常组合使用,常见于各种分类算法。
cross_entropy_loss 底层实际也是调用的 log_softmax 和 nll_loss。该算子一步到位的将 softmax、log 及 nll 操作全部完成。
b = torch.Tensor([ [1, 2], [0.5, 3], [0.9, 4] ])
loss = nn.CrossEntropyLoss()
l1 = loss(b, torch.LongTensor([0, 1, 0]))
print('-- loss : ', l1) # tensor(1.5121)
伊织 2022-12-04
DL - softmax、log_softmax、nll_loss、cross_entropy_loss相关推荐
- PyTorch学习笔记——softmax和log_softmax的区别、CrossEntropyLoss() 与 NLLLoss() 的区别、log似然代价函数...
1.softmax 函数 Softmax(x) 也是一个 non-linearity, 但它的特殊之处在于它通常是网络中一次操作. 这是因为它接受了一个实数向量并返回一个概率分布.其定义如下. 定义 ...
- DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax+交叉熵误差)简介、使用方法、应用案例之详细攻略
DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax函数+交叉熵误差)简介.使用方法.应用案例之详细攻略 目录 SoftmaxWithLoss算法简介 1.Soft ...
- Pytorch详解NLLLoss和CrossEntropyLoss、以及softmax和log_softmax
数据 import torch import torch.nn.functional as F import numpy as np# 随机新建3个样例数据,每个样例数据包含4个属性特征 input ...
- DL之LeNet-5:LeNet-5算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之LeNet-5:LeNet-5算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 LeNet-5算法的简介(论文介绍) LeNet-5算法的架构详解 1.LeNet-5 结构分 ...
- DL之SegNet:SegNet图像分割/语义分割算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之SegNet:SegNet图像分割/语义分割算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 导读 基于CNN的神经网络SegNet算法可进行高精度地识别行驶环境. 目录 SegN ...
- DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略
DL框架之Keras:深度学习框架Keras框架的简介.安装(Python库).相关概念.Keras模型使用.使用方法之详细攻略 目录 Keras的简介 1.Keras的特点 2.Keras四大特性 ...
- DL:基于神经网络的深度学习模型的总概览简介(DNN/CNN/RNN等)、各种网络结构对比、案例应用对比之详细攻略
DL:基于神经网络的深度学习模型的总概览简介(DNN/CNN/RNN等).各种网络结构对比.案例应用对比之详细攻略 目录 神经网络所有模型的简介(概览) DNN.CNN.RNN结构对比 相关文章 DL ...
- 广义线性模型、Logistic、sigmoid、softmax、多分类、与大数据、优缺点
广义线性模型.广义线性模型的数学形式.Logistic回归.sigmoid函数.softmax函数.Logistic多分类.Logistic与大数据.Logistic回归优缺点总结 目录
- DL中版本配置问题:TensorFlow、Keras、Python版本完美搭配推荐
DL中版本配置问题:TensorFlow.Keras.Python版本完美搭配推荐 目录 TensorFlow.Keras.Python版本完美搭配推荐 TensorFlow.Keras.Python ...
最新文章
- 刷固件Layer1到手机FLASH(硬刷)
- boost::mpl模块实现list_c相关的测试程序
- 字符串的比较相关方法
- 基于CNN实现CIFAR100识别-tensorflow2.0实现
- mysql的 怎么处理_本人的MySQL连接到底怎么处理才好……
- 哈希表存在的问题及解决方案
- 我的docker随笔9:docker在centos上的安装
- eclipse package包 java类 有问号 无法读取的问题解决
- L1-024. 后天-PAT团体程序设计天梯赛GPLT
- 设计模式---访问者模式(C++实现)
- I Think I Can!
- 计算机四级网络工程师总结
- Spring+SpringMVC+MyBatis+JQ+BootStrap练习
- GreatRiver研讨会 | ARINC 818的应用及发展
- php 微信上传多张图片,php,微信_微信jssdk能上传多张图片吗?,php,微信,javascript - phpStudy...
- noip2017广东提高组复赛成绩
- IDEA中TODO的使用、配置和设置TODO过滤器
- buff系统 游戏中_arpg游戏的技能系统和buff系统的一种实现
- python-windows命令行启动appium及杀掉对应接口进程
- Linux下安装firefox最新版
热门文章
- BUUCTF PWN 刷题 1-15题
- win10下Xshell或Xftp缺少mfc110.dll msvcr110.dll怎么破?
- 工作之命令小总结(7):tail命令
- 3、基于51单片机的智能水箱控制系统-温度-PH值-水位(仿真+程序+原理图)
- Java后端技术体系
- python并发框架 gevent_python并发编程之gevent协程(四)
- linux读取一行数据命令,Shell脚本一次读取文件中一行的2种写法
- 2014年华为7月校招(提前批)的一些题目
- 阿里云学生服务器购买指南(用途和优势)
- 无损放大图片如何设置?图片放大模糊怎么解决?