Pytorch教程[07]损失函数

简介: Pytorch教程[07]损失函数

一.损失函数概念


损失函数(loss function):衡量模型输出与真实标签的差异

也叫代价函数(cost function)/准则(criterion)/目标函数(objective function)/误差函数(error function)

名字有很多,其实都是一个东西

二.Pytorch内置损失函数


1、nn.CrossEntropyLoss


功能: nn.LogSoftmax ()与nn.NLLLoss ()结合,进行

交叉熵计算

主要参数:

• weight:各类别的loss设置权值

• ignore _index:忽略某个类别

• reduction:计算模式,可为none/sum /mean

  1. none- 逐个元素计算
  2. sum- 所有元素求和,返回标量
  3. mean- 加权平均,返回标量

image.png

nn.CrossEntropyLoss(weight=None, 
          size_average=None, 
          ignore_index=-100, 
          reduce=None, 
          reduction=‘mean’)
# Example of target with class indices
loss = nn.CrossEntropyLoss()
input = torch.randn(3, 5, requires_grad=True)
target = torch.empty(3, dtype=torch.long).random_(5)
output = loss(input, target)
output.backward()
# Example of target with class probabilities
input = torch.randn(3, 5, requires_grad=True)
target = torch.randn(3, 5).softmax(dim=1)
output = loss(input, target)
output.backward()

2、 nn.NLLLoss


功能:实现负对数似然函数中的负号功能

主要参数:

• weight:各类别的loss设置权值

• ignore _index:忽略某个类别

• reduction :计算模式,可为none/sum /m e an

none-逐个元素计算

sum-所有元素求和,返回标量

mean-加权平均,返回标量

nn.NLLLoss(weight=None,
       size_average=None, 
       ignore_index=-100, 
       reduce=None, 
       reduction='mean')

image.png

3、 nn.BCELoss


功能:二分类交叉熵

注意事项:输入值取值在[0,1]

主要参数:

• weight:各类别的loss设置权值

• ignore_index:忽略某个类别

• reduction :计算模式,可为none/sum /m e an

none-逐个元素计算

sum-所有元素求和,返回标量

mean-加权平均,返回标量

torch.nn.BCELoss(weight=None, 
         size_average=None,
         reduce=None, 
         reduction='mean')

4、 nn.BCEWithLogitsLoss


功能:结合Sigmoid与二分类交叉熵

注意事项:网络最后不加sigmoid函数

主要参数:

• pos _weight:正样本的权值

• weight:各类别的loss设置权值

• ignore _index:忽略某个类别

• reduction:计算模式,可为none/sum /m e an

none-逐个元素计算

sum-所有元素求和,返回标量

mean-加权平均,返回标量

nn.BCEWithLogitsLoss(weight=None, 
           size_average=None, 
           reduce=None, reduction='mean', 
           pos_weight=None)

5、 nn.L1Loss


功能: 计算inputs与target之差的绝对值

6 、nn.MSELoss


功能: 计算inputs与target之差的平方

主要参数:

• reduction :计算模式,可为none/sum/mean

none- 逐个元素计算

sum- 所有元素求和,返回标量

mean- 加权平均,返回标量

7、 nn.SmoothL1Loss


功能:创建一个标准,如果绝对元素误差低于β,则使用平方项,否则使用L1项。它对异常值的敏感度低于torch.nn.MSELoss,并且在某些情况下可以防止爆炸梯度

size_average

reduce

reduction

beta

8、 nn.PoissonNLLLoss

功能:泊松分布的负对数似然损失函数

主要参数:

• log_input :输入是否为对数形式,决定计算公式

• full :计算所有loss,默认为False

• eps :修正项,避免log(input)为nan

9、 nn.KLDivLoss


功能:计算KLD(divergence),KL散度,相对熵

注意事项:需提前将输入计算 log-probabilities,

如通过nn.logsoftmax()

主要参数:

• reduction :none/sum/mean/batchmean

batchmean- batchsize维度求平均值

none- 逐个元素计算

sum- 所有元素求和,返回标量

mean- 加权平均,返回标量

10、 nn.MarginRankingLoss


功能:计算两个向量之间的相似度,用于排序任务

特别说明:该方法计算两组数据之间的差异,返回一个n*n

的 loss 矩阵

主要参数:

• margin :边界值,x1与x2之间的差异值

• reduction :计算模式,可为none/sum/mean

y = 1时, 希望x1比x2大,当x1>x2时,不产生loss

y = -1时,希望x2比x1大,当x2>x1时,不产生loss

11、 nn.MultiLabelMarginLoss


功能:多标签边界损失函数

举例:四分类任务,样本x属于0类和3类,

标签:[0, 3, -1, -1] , 不是[1, 0, 0, 1]

主要参数:

• reduction :计算模式,可为none/sum/mean

12、 nn.SoftMarginLoss


功能:计算二分类的logistic损失

主要参数:

• reduction :计算模式,可为none/sum/mean

13、 nn.MultiLabelSoftMarginLoss


功能:SoftMarginLoss多标签版本

主要参数:

• weight:各类别的loss设置权值

• reduction :计算模式,可为none/sum/mean

14、 nn.MultiMarginLoss


功能:计算多分类的折页损失

主要参数:

• p :可选1或2

• weight:各类别的loss设置权值

• margin :边界值

• reduction :计算模式,可为none/sum/mean

15、 nn.TripletMarginLoss


功能:计算三元组损失,人脸验证中常用

主要参数:

• p :范数的阶,默认为2

• margin :边界值

• reduction :计算模式,可为none/sum/mean

16、 nn.HingeEmbeddingLoss


功能:计算两个输入的相似性,常用于非线性embedding和半监督学习

特别注意:输入x应为两个输入之差的绝对值

主要参数:

• margin :边界值

• reduction :计算模式,可为none/sum/mean

17、 nn.CosineEmbeddingLoss


功能:采用余弦相似度计算两个输入的相似性

主要参数:

• margin :可取值[-1, 1] , 推荐为[0, 0.5]

• reduction :计算模式,可为none/sum/mean

18、 nn.CTCLoss


功能: 计算CTC损失,解决时序类数据的分类

Connectionist Temporal Classification

主要参数:

• blank :blank label

• zero_infinity :无穷大的值或梯度置0

• reduction :计算模式,可为none/sum/mean

相关文章
|
2月前
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
255 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
2月前
|
并行计算 监控 搜索推荐
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
当处理大规模图数据时,复杂性难以避免。PyTorch-BigGraph (PBG) 是一款专为此设计的工具,能够高效处理数十亿节点和边的图数据。PBG通过多GPU或节点无缝扩展,利用高效的分区技术,生成准确的嵌入表示,适用于社交网络、推荐系统和知识图谱等领域。本文详细介绍PBG的设置、训练和优化方法,涵盖环境配置、数据准备、模型训练、性能优化和实际应用案例,帮助读者高效处理大规模图数据。
76 5
|
3月前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
562 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
4月前
|
机器学习/深度学习
小土堆-pytorch-神经网络-损失函数与反向传播_笔记
在使用损失函数时,关键在于匹配输入和输出形状。例如,在L1Loss中,输入形状中的N代表批量大小。以下是具体示例:对于相同形状的输入和目标张量,L1Loss默认计算差值并求平均;此外,均方误差(MSE)也是常用损失函数。实战中,损失函数用于计算模型输出与真实标签间的差距,并通过反向传播更新模型参数。
|
5月前
|
并行计算 Ubuntu PyTorch
Ubuntu下CUDA、Conda、Pytorch联合教程
本文是一份Ubuntu系统下安装和配置CUDA、Conda和Pytorch的教程,涵盖了查看显卡驱动、下载安装CUDA、添加环境变量、卸载CUDA、Anaconda的下载安装、环境管理以及Pytorch的安装和验证等步骤。
1007 1
Ubuntu下CUDA、Conda、Pytorch联合教程
|
8月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(二十)(4)
PyTorch 2.2 中文官方教程(二十)
165 0
PyTorch 2.2 中文官方教程(二十)(4)
|
8月前
|
Android开发 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(二十)(2)
PyTorch 2.2 中文官方教程(二十)
137 0
PyTorch 2.2 中文官方教程(二十)(2)
|
8月前
|
iOS开发 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(二十)(1)
PyTorch 2.2 中文官方教程(二十)
128 0
PyTorch 2.2 中文官方教程(二十)(1)
|
8月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十九)(3)
PyTorch 2.2 中文官方教程(十九)
86 0
PyTorch 2.2 中文官方教程(十九)(3)
|
8月前
|
机器学习/深度学习 监控 PyTorch
PyTorch模型训练:优化器与损失函数的选择
【4月更文挑战第17天】PyTorch中的优化器(如SGD, Adam, RMSprop)和损失函数(如MSE Loss, Cross Entropy Loss)对模型训练效果有显著影响。优化器选择应基于任务复杂度和数据规模,SGD适合简单任务,而Adam和RMSprop适用于复杂情况。损失函数选择依赖于任务类型,MSE Loss用于回归,Cross Entropy Loss用于分类。实践中,应尝试不同组合,调整学习率,监控训练过程,并使用验证集优化模型。

热门文章

最新文章