文章目录
- 1. 什么是损失函数
- 2. PyTorch中的损失函数
- 2.1 nn.CrossEntropyLoss
- 2.2 nn.NLLLoss
- 2.3 nn.BCELoss
- 2.4 nn.BCEWithLogitsLoss
- 2.5 nn.L1Loss
- 2.6 nn.MSELoss
- 2.7 nn.SmoothL1Loss
- 2.8 nn.PoissonNLLLoss
- 2.9 nn.KLDivLoss
- 2.10 nn.MarginRankingLoss
- 2.11 nn.MultiLabelMarginLoss
- 2.12 nn.SoftMarginLoss
- 2.13 nn.MultiLabelSoftMarginLoss
- 2.14 nn.MultiMarginLoss
- 2.15 nn.TripletMarginLoss
- 2.16 nn.HingeEmbeddingLoss
- 2.17 nn.CosineEmbedingLoss
- 2.18 nn.CTCLoss
- 2.16 nn.HingeEmbeddingLoss
- 2.17 nn.CosineEmbedingLoss
- 2.18 nn.CTCLoss
1. 什么是损失函数
衡量模型输出与真实标签的差异
-
损失函数:计算一个样本的差异
L o s s = f ( y ^ − y ) Loss=f(\hat{y}-y) Loss=f(y^−y) -
代价函数:计算整个样本的损失函数的平均值
C o s t = 1 n ∑ i = 1 n f ( y ^ − y ) Cost=\frac{1}{n}\sum_{i=1}^n f(\hat{y}-y) Cost=n1i=1∑nf(y^−y) -
目标函数
O b j = C o s t + R e g u l a r i z a t i o n Obj=Cost+Regularization Obj=Cost+Regularization

size_average 和 reduce后期版本将被舍弃,不要再用了
2. PyTorch中的损失函数
2.1 nn.CrossEntropyLoss
-
功能:
nn.LogSoftmax()与nn.NLLLoss()结合,进行交叉熵计算nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None,reduction='mean') -
主要参数:
- weight:各类别的loss设置权值
对于分类问题,每个分类都有一个loss函数值,此参数就是每个分类的权重 - ignore_index:忽略某个类别,不参与计算loss函数值
- reduction:计算模式,可为
none、sum、mean- none:逐个元素计算,返回长度为类别数
- sum:所有元素求和返回标量,一个值的Tensor
- mean:加权平均返回标量,一个值的Tensor
- weight:各类别的loss设置权值
2.2 nn.NLLLoss
- 功能:实现负对数似然函数中的负号功能
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQ7tK99T-1582603752282)(损失函数/nll_loss.png)]](https://i-blog.csdnimg.cn/blog_migrate/3391f34e6732603cb3960bb19a3e76fe.png)
- 主要参数:
- weight:各类别的loss设置权值
对于分类问题,每个分类都有一个loss函数值,此参数就是每个分类的权重 - ignore_index:忽略某个类别,不参与计算loss函数值
- reduction:计算模式,可为
none、sum、mean- none:逐个元素计算,返回长度为类别数
- sum:所有元素求和返回标量,一个值的Tensor
- mean:加权平均返回标量,一个值的Tensor
- weight:各类别的loss设置权值
2.3 nn.BCELoss
-
功能:二分类交叉熵
注意,输入值取值在 [ 0 , 1 ] [0,1] [0,1]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g3YJ5vDw-1582603752291)(损失函数/bce_loss.png)]](https://i-blog.csdnimg.cn/blog_migrate/8fc68eeadc947120dbacd055fa58be09.png)
- 主要参数:
- weight:各类别的loss设置权值
对于分类问题,每个分类都有一个loss函数值,此参数就是每个分类的权重 - ignore_index:忽略某个类别,不参与计算loss函数值
- reduction:计算模式,可为
none、sum、mean- none:逐个元素计算,返回长度为类别数
- sum:所有元素求和返回标量,一个值的Tensor
- mean:加权平均返回标量,一个值的Tensor
- weight:各类别的loss设置权值
2.4 nn.BCEWithLogitsLoss
-
功能:结合Sigmoid与二分类交叉熵
注意,网络最后不需要加sigmoid激活函数了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FpnXx9kY-1582603752297)(损失函数/bce_sigmoid__loss.png)]](https://i-blog.csdnimg.cn/blog_migrate/9dbe0eb78fb8e54178917b22fed10efe.png)
- 主要参数:
- pos_weight:正样本的权值
- weight:各类别的loss设置权值
对于分类问题,每个分类都有一个loss函数值,此参数就是每个分类的权重 - ignore_index:忽略某个类别,不参与计算loss函数值
- reduction:计算模式,可为
none、sum、mean- none:逐个元素计算,返回长度为类别数
- sum:所有元素求和返回标量,一个值的Tensor
- mean:加权平均返回标量,一个值的Tensor
2.5 nn.L1Loss
-
功能:计算inputs与target之差的绝对值( l 1 l_1 l1范数误差)
nn.L1Loss(size_average=None, reduce=None, reduction='mean')
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwGxANwN-1582603752299)(损失函数/l1_loss.png)]](https://i-blog.csdnimg.cn/blog_migrate/64abcdd7bb3dd0f88228a9bcb1692b8e.png)
2.6 nn.MSELoss
- 功能:计算inputs和target之差的平方( l 2 l_2 l2范数误差,或者 m 2 m_2 m2范数误差)
nn.MSELoss(size_average=None, reduce=None, reduction='mean')
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1lb3zkYR-1582603752300)(损失函数/MSE_loss.png)]](https://i-blog.csdnimg.cn/blog_migrate/ad30cff19a00b48b8f0ee1cb553ad23f.png)
2.7 nn.SmoothL1Loss
- 功能:平滑的 l 1 l_1 l1 loss
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1HJHAXEr-1582603752305)(损失函数/smooth_l1_loss.png)]](https://i-blog.csdnimg.cn/blog_migrate/4276715927ddc31bbe44f02dc49ad5e3.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bx7KI4dn-1582603752309)(损失函数/l1_loss_figure.png)]](https://i-blog.csdnimg.cn/blog_migrate/719798c2cd0124fd2cab9e9b7c34afac.png)
2.8 nn.PoissonNLLLoss
- 功能:破松分布的负对数似然函数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tcgn3YlX-1582603752313)(损失函数/poisson_nll_loss.png)]](https://i-blog.csdnimg.cn/blog_migrate/08060b7a9a9d234987c9df540c29595e.png)
- 主要参数:
- log_input:输入是否为对数形式,决定计算公式
- full:计算所有loss,默认False
- eps:修正项,避免 log ( i n p u t ) \log(input) log(input) 为 N a N NaN NaN
2.9 nn.KLDivLoss
- 功能:计算KL散度,相对熵
2.10 nn.MarginRankingLoss
- 功能:计算两个向量之间的相似度,用于排序任务
2.11 nn.MultiLabelMarginLoss
- 功能:多标签边界损失函数
2.12 nn.SoftMarginLoss
- 功能:计算二分类的Logistic损失
2.13 nn.MultiLabelSoftMarginLoss
- 功能:SoftMarginLoss的多标签版本
2.14 nn.MultiMarginLoss
- 功能:计算多分类的折页损失
2.15 nn.TripletMarginLoss
- 功能:计算三元组损失,人脸验证中常用
2.16 nn.HingeEmbeddingLoss
- 功能:计算两个输入的相似性,常用于迁移学习和半监督学习
2.17 nn.CosineEmbedingLoss
- 功能:采用余弦相似度计算两个输入的相似性
2.18 nn.CTCLoss
- 功能:计算CTC损失,解决时序类数据的分类损失,人脸验证中常用
2.16 nn.HingeEmbeddingLoss
- 功能:计算两个输入的相似性,常用于迁移学习和半监督学习
2.17 nn.CosineEmbedingLoss
- 功能:采用余弦相似度计算两个输入的相似性
2.18 nn.CTCLoss
- 功能:计算CTC损失,解决时序类数据的分类
本文详细介绍了PyTorch中的各种损失函数,包括交叉熵损失、二分类交叉熵、绝对误差、平方误差等,解释了它们的功能、主要参数及应用场景,是深度学习模型训练不可或缺的指南。
1341

被折叠的 条评论
为什么被折叠?



