本文转自CSDN,作者:明哥敏
损耗函数由torch.nn包实现
基本用法
criterion = LossCriterion #构造函数有自己的参数 loss = criterion(x, y) #调用标准时也有参数19损失函数
1.L1范数损失L1损失
计算输出和目标之间差值的绝对值。
torch.nn.L1Loss(reduction='mean')参数:
Reduction-三个值,无:不使用reduction;Mean:返回损失总和的平均值;Sum:返回损失的总和。默认:均值。
2.均方差损失
计算输出和目标之间差值的均方误差。
torch.nn.MSELoss(reduction='mean')参数:
Reduction-三个值,无:不使用reduction;Mean:返回损失总和的平均值;Sum:返回损失的总和。默认:均值。
3.交叉熵损失
有c类分类问题的时候非常有效。可选参数权重必须是一维张量,权重将分配给每个类别。对于不平衡的训练集非常有效。
在多分类任务中,往往使用softmax激活函数+交叉熵损失函数,因为交叉熵描述的是两种概率分布的差异,而神经网络的输出是向量,不是概率分布的形式。因此,需要使用softmax激活函数将一个向量“归一化”成概率分布的形式,然后使用交叉熵损失函数来计算损失。
torch.nn.CrossEntropyLoss(weight=None,ignore_index=-100, reduction='mean')参数:
权重(张量,可选)-每个类别的用户定义权重。一定是长度为c的张量。
Ignore _ index (int,可选)-设置一个目标值,该值将被忽略,不会影响输入的渐变。
Reduction-三个值,无:不使用reduction;Mean:返回损失总和的平均值;Sum:返回损失的总和。默认:均值。
4.KL发散损失
计算输入和目标之间的KL散度。KL散度可以用来度量不同连续分布之间的距离,对于连续输出分布的空之间的直接回归(离散采样)非常有效。
torch.nn.KLDivLoss(reduction='mean')参数:
Reduction-三个值,无:不使用reduction;Mean:返回损失总和的平均值;Sum:返回损失的总和。默认:均值。
5.二元交叉熵损失
任务分类时交叉熵的计算函数。用于测量重构误差,如自动编码器。请注意,目标t[i]的值在0到1之间。
torch.nn.BCELoss(weight=None, reduction='mean')参数:
重量(张量,可选)-用户定义的每个批次元素的损失重量。它必须是长度为“nbatch”的张量
6.BCEWithLogitsLoss
BCEWithLogitsLoss损失函数将Sigmoid层集成到BCELoss类中。与简单的Sigmoid层和BCELoss相比,这个版本在数值上更稳定,因为在将这两个操作结合到一个层之后,可以使用对数和exp技术来实现数值稳定性。
torch.nn.BCEWithLogitsLoss(weight=None, reduction='mean', pos_weight=None)参数:
重量(张量,可选)-用户定义的每个批次元素的损失重量。它必须是长度为“nbatch”的张量
7. MarginRankingLoss torch.nn.MarginRankingLoss(margin=0.0, reduction='mean')小批量中每个实例的损失函数如下:
参数:
边距:默认值为0
8. HingeEmbeddingLoss torch.nn.HingeEmbeddingLoss(margin=1.0, reduction='mean')小批量中每个实例的损失函数如下:
参数:
边距:默认值为1
9. 多标签分类损失 MultiLabelMarginLoss torch.nn.MultiLabelMarginLoss(reduction='mean')对于小批量的每个样品,根据以下公式计算损失:
10平滑版L1损耗平滑1损耗
也称为Huber损失函数。
torch.nn.SmoothL1Loss(reduction='mean')在…之中
11.2分类软件的物流损失
torch.nn.SoftMarginLoss(reduction='mean')12.多标签一对全损失多标签软保证金损失
torch.nn.MultiLabelSoftMarginLoss(weight=None, reduction='mean')13.余弦损失余弦嵌入损失
torch.nn.CosineEmbeddingLoss(margin=0.0, reduction='mean')参数:
边距:默认值为0
14. 多类别分类的hinge损失 MultiMarginLoss torch.nn.MultiMarginLoss(p=1, margin=1.0, weight=None, reduction='mean')参数:
P=1或2默认值:1
边距:默认值为1
15. 三元组损失 TripletMarginLoss类似孪生网,具体例子:给a,然后给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-三个值,无:不使用reduction;Mean:返回损失总和的平均值;Sum:返回损失的总和。默认:均值。
17.负对数似然损失
负对数似然损失。用来训练C类的分类问题。
torch.nn.NLLLoss(weight=None, ignore_index=-100, reduction='mean')参数:
权重(张量,可选)-每个类别的用户定义权重。一定是长度为c的张量。
Ignore _ index (int,可选)-设置一个目标值,该值将被忽略,因此不会影响输入的渐变。
18.NLLLoss2d
对于图像输入的负对数似然损失,计算每个像素的负对数似然损失。
torch.nn.NLLLoss2d(weight=None, ignore_index=-100, reduction='mean')参数:
权重(张量,可选)-每个类别的用户定义权重。一定是长度为c的张量。
Reduction-三个值,无:不使用reduction;Mean:返回损失总和的平均值;Sum:返回损失的总和。默认:均值。
19.PoissonNLLLoss
目标值是泊松分布的负对数似然损失
torch.nn.PoissonNLLLoss(log_input=True, full=False, eps=1e-08, reduction='mean')参数:
Log _ input (bool,可选)–如果设置为True,则根据一般公式exp(input)-target * input计算损失;如果设置为False,将根据输入-目标*日志(输入+每股收益)计算损失。
满(bool,可选)-是否计算所有损失,即加上斯特林近似项目标* log(target)-目标+0.5 * log (2 * pi * target)。
Eps(浮动,可选)-默认值:1e-8
参考文献:
pytorch损耗函数概述
http://www.voidcn.com/article/p-rtzqgqkz-bpg.html
这篇文章是明戈敏从CSDN转来的。转载这篇文章的目的是为了传递更多的信息,版权归原作者所有。
原文链接:https://blog.csdn.net/shanglianlm/article/details/85019768
1.《交叉熵损失函数 深度学习19种损失函数,你认识几个?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《交叉熵损失函数 深度学习19种损失函数,你认识几个?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1601247.html