收藏 | 深度学习19个损失函数汇总
点上方蓝字计算机视觉联盟获取更多干货
在右上方 ··· 设为星标 ★,与你不见不散
仅作学术分享,不代表本公众号立场,侵权联系删除
转载于:作者|mingo_敏,来源
https://blog.csdn.net/shanglianlm/article/details/85019768
AI博士笔记系列推荐
周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接
tensorflow和pytorch很多都是相似的,这里以pytorch为例。
1. L1范数损失 L1Loss
计算 output 和 target 之差的绝对值。
torch.nn.L1Loss(reduction='mean')
参数:
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean。
2 均方误差损失 MSELoss
计算 output 和 target 之差的均方差。
torch.nn.MSELoss(reduction='mean')
参数:
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean。
3 交叉熵损失 CrossEntropyLoss
当训练有 C 个类别的分类问题时很有效. 可选参数 weight 必须是一个1维 Tensor, 权重将被分配给各个类别. 对于不平衡的训练集非常有效。
在多分类任务中,经常采用 softmax 激活函数+交叉熵损失函数,因为交叉熵描述了两个概率分布的差异,然而神经网络输出的是向量,并不是概率分布的形式。所以需要 softmax激活函数将一个向量进行“归一化”成概率分布的形式,再采用交叉熵损失函数计算 loss。
torch.nn.CrossEntropyLoss(weight=None,ignore_index=-100, reduction='mean')
参数:
weight (Tensor, optional) – 自定义的每个类别的权重. 必须是一个长度为 C 的 Tensor
ignore_index (int, optional) – 设置一个目标值, 该目标值会被忽略, 从而不会影响到 输入的梯度。
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean。
4 KL 散度损失 KLDivLoss
计算 input 和 target 之间的 KL 散度。KL 散度可用于衡量不同的连续分布之间的距离, 在连续的输出分布的空间上(离散采样)上进行直接回归时 很有效.
torch.nn.KLDivLoss(reduction='mean')
参数:
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean。
5 二进制交叉熵损失 BCELoss
二分类任务时的交叉熵计算函数。用于测量重构的误差, 例如自动编码机. 注意目标的值 t[i] 的范围为0到1之间.
torch.nn.BCELoss(weight=None, reduction='mean')
参数:
weight (Tensor, optional) – 自定义的每个 batch 元素的 loss 的权重. 必须是一个长度为 “nbatch” 的 的 Tensor
6 BCEWithLogitsLoss
BCEWithLogitsLoss损失函数把 Sigmoid 层集成到了 BCELoss 类中. 该版比用一个简单的 Sigmoid 层和 BCELoss 在数值上更稳定, 因为把这两个操作合并为一个层之后, 可以利用 log-sum-exp 的 技巧来实现数值稳定.
torch.nn.BCEWithLogitsLoss(weight=None, reduction='mean', pos_weight=None)
参数:
weight (Tensor, optional) – 自定义的每个 batch 元素的 loss 的权重. 必须是一个长度 为 “nbatch” 的 Tensor
7 MarginRankingLoss
torch.nn.MarginRankingLoss(margin=0.0, reduction='mean')
对于 mini-batch(小批量) 中每个实例的损失函数如下:参数:
margin:默认值0
8 HingeEmbeddingLoss
torch.nn.HingeEmbeddingLoss(margin=1.0, reduction='mean')
对于 mini-batch(小批量) 中每个实例的损失函数如下:
参数:
margin:默认值1
9 多标签分类损失 MultiLabelMarginLoss
torch.nn.MultiLabelMarginLoss(reduction='mean')
对于mini-batch(小批量) 中的每个样本按如下公式计算损失:
10 平滑版L1损失 SmoothL1Loss
也被称为 Huber 损失函数。
torch.nn.SmoothL1Loss(reduction='mean')
其中
11 2分类的logistic损失 SoftMarginLoss
torch.nn.SoftMarginLoss(reduction='mean')
12 多标签 one-versus-all 损失 MultiLabelSoftMarginLoss
torch.nn.MultiLabelSoftMarginLoss(weight=None, reduction='mean')
13 cosine 损失 CosineEmbeddingLoss
torch.nn.CosineEmbeddingLoss(margin=0.0, reduction='mean')
参数:
margin:默认值0
14 多类别分类的hinge损失 MultiMarginLoss
torch.nn.MultiMarginLoss(p=1, margin=1.0, weight=None, reduction='mean')
参数:
p=1或者2 默认值:1
margin:默认值1
15 三元组损失 TripletMarginLoss
和孪生网络相似,具体例子:给一个A,然后再给B、C,看看B、C谁和A更像。
torch.nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, reduction='mean')
其中:
16 连接时序分类损失 CTCLoss
CTC连接时序分类损失,可以对没有对齐的数据进行自动对齐,主要用在没有事先对齐的序列化数据训练上。比如语音识别、ocr识别等等。
torch.nn.CTCLoss(blank=0, reduction='mean')
参数:
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean。
17 负对数似然损失 NLLLoss
负对数似然损失. 用于训练 C 个类别的分类问题.
torch.nn.NLLLoss(weight=None, ignore_index=-100, reduction='mean')
参数:
weight (Tensor, optional) – 自定义的每个类别的权重. 必须是一个长度为 C 的 Tensor
ignore_index (int, optional) – 设置一个目标值, 该目标值会被忽略, 从而不会影响到 输入的梯度.
18 NLLLoss2d
对于图片输入的负对数似然损失. 它计算每个像素的负对数似然损失.
torch.nn.NLLLoss2d(weight=None, ignore_index=-100, reduction='mean')
参数:
weight (Tensor, optional) – 自定义的每个类别的权重. 必须是一个长度为 C 的 Tensor
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean。
19 PoissonNLLLoss
目标值为泊松分布的负对数似然损失
torch.nn.PoissonNLLLoss(log_input=True, full=False, eps=1e-08, reduction='mean')
参数:
log_input (bool, optional) – 如果设置为 True , loss 将会按照公 式 exp(input) - target * input 来计算, 如果设置为 False , loss 将会按照 input - target * log(input+eps) 计算.
full (bool, optional) – 是否计算全部的 loss, i. e. 加上 Stirling 近似项 target * log(target) - target + 0.5 * log(2 * pi * target).
eps (float, optional) – 默认值: 1e-8
参考资料:
pytorch loss function 总结
http://www.voidcn.com/article/p-rtzqgqkz-bpg.html
end
这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习
目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟
王博的公众号,欢迎关注,干货多多
王博的系列手推笔记(附高清PDF下载):
博士笔记 | 周志华《机器学习》手推笔记第一章思维导图
博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”
博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”
博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”
博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”
博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)
博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)
博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)
博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)
博士笔记 | 周志华《机器学习》手推笔记第八章(上)
博士笔记 | 周志华《机器学习》手推笔记第八章(下)
博士笔记 | 周志华《机器学习》手推笔记第九章
点个在看支持一下吧
收藏 | 深度学习19个损失函数汇总相关推荐
- 深度学习相关阅读论文汇总(持续更新)
深度学习相关阅读论文汇总(持续更新) 1 Long-Term Temporal Convolutions(LTC)for Action Recognition IEEE Transactions on ...
- 深度学习 交叉熵损失函数
交叉熵损失函数 前言 交叉熵损失函数 信息量 信息熵 交叉熵 求导过程 应用 扩展 Binary_Crossentropy 均方差损失函数(MSE) 前言 深度学习中的损失函数的选择,需要注意一点是直 ...
- 深度学习目标检测网络汇总对比,挺好的
深度学习目标检测网络汇总对比 本文总阅读量次 欢迎star我的博客 2019-01-03 参考 :https://medium.com/@jonathan_hui/object-detection-s ...
- 深度学习开源框架知识汇总
深度学习开源框架知识汇总 1 概述 1.1开源框架总览 1.2如何学习开源框架 2 开源框架 2.1 Caffe (1)caffe的使用通常是下面的流程: (2)caffe:图像分类从模型自定义到测试 ...
- 损失能收敛到0么 深度学习_人工智能-Tensorflow进行深度学习的一些损失函数的可视化...
TensorFlow目前是数值计算的最佳开源库,它使机器学习更快更容易.在这篇文章中,您将学习机器学习中使用的一些损失函数.损失函数在机器学习领域非常重要.它们用作测量模型预测输出Y_out与grou ...
- 深度学习图像标注工具汇总
深度学习图像标注工具汇总 原文地址: https://blog.csdn.net/chaipp0607/article/details/79036312 对于监督学习算法而言,数据决定了任务的上限,而 ...
- Tutorial教程:知错就改,错了就罚,论训练深度学习如何选择损失函数
Tutorial教程:训练深度学习如何选择损失函数 xingbod@gmail.com 声明:本文为CSDN首发,谢绝转载,商业转载请联系笔者MrCharles本人获取同意 作为优化算法的一部分,必须 ...
- 手撕深度学习中的损失函数(上)
面试中经常会问到损失函数的相关问题,本文推导了深度学习中常用损失函数的计算公式和反向传播公式,并使用numpy实现. 定义损失函数基类: class Loss:def loss(self, predi ...
- 【深度学习】深度学习手写代码汇总(建议收藏,面试用)
这几天一些同学在面试的时候,遇到了一些手写代码的题,因为之前都没有准备到,所以基本上在写的时候都有点蒙. 今天我就把一些常见的考题给大家整理下,这些题也是我之前准备面试的时候整理的,很多的代码都是网上 ...
最新文章
- 硝烟四起的云服务双十一促销大战,谁更便宜?
- 【问题解决】M5神库M5Stack-SD-Updater安装及使用方法
- php numeric乘法,PHP is_numeric()用法及代码示例
- 为什么年事已高的我还在编程?
- 【LeetCode笔记】112 113. 路径总和 I II(Java、递归、DFS)
- linux配置ARP内核参数,详细讲解linux内核参数arp_announce和arp_ignore
- ES6——Class 的继承 笔记
- 传海思为 PC 开发 CPU/GPU ;小米将发布第二款 5G 手机;Firefox 68.0.2 发布 | 极客头条...
- ICS共享上网方案与配置
- websocket binary 数据解析_websocket协议
- 如何利用云流送(Cloud Streaming)构造一个全三维、沉浸式的数字化虚拟景区
- uni-app初学步骤教程:
- elasticsearch的父子_ElasticSearch 学习记录之父子结构的查询
- 我的2013 Q.E.D
- Python可视化扩展库Matplotlib中使用参数cmap实现颜色映射
- 两行轨道报(TLE)简介
- 【C语言】重要函数qsort函数的用法
- linux gre配置,Linux中配置GRE隧道
- cacti监控客户端配置
- 90后浙理工硕士论文登Nature,毕业却考取公务员!网友:宇宙尽头是考公
热门文章
- html调用文章标题,HTML中文章标题标签的详细介绍
- nginx 常用命令整理
- python3.5安装scrapy_在Python3.5下安装和测试Scrapy爬网站
- make时候说找不到makefile_优秀自律的句子:找不到理由继续的时候,就找个理由重头来过吧...
- postgresql编译安装
- Oracle的安装、配置与工具使用 实验笔记一
- Strust2的sx:datetimepicker限制日期选择
- 什么浏览器好用_手机浏览器不只UC,好用的浏览器还有这些
- 用计算机探索规律的ppt,用计算机探索规律.ppt
- 自动放大_放大招!滴滴自动驾驶汽车通过图灵测试,quot;车技quot;不输老司机...