Pytorch框架学习(10)——损失函数
2020-02-13 本文已影响0人
aidanmomo
@[toc]
1. 损失函数概念
-
损失函数:衡量模型输出与真实标签的差异
在这里插入图片描述 - 损失函数(Loss Function):
- 代价函数(Cost Function):
- 目标函数(Objective Function):
2. 交叉熵损失函数
- 1.nn.CrossEntropyLoss
- 功能:nn.LogSoftmax()与nn.NLLLoss()结合,进行交叉熵计算
- 主要参数:
- weight:各类别的loss设置权值
- ignore_index:忽略某个类别
- reduction:计算模式,可为none/sum/mean
- none:逐个元素计算
- sum:所有元素求和,返回标量
- mean:加权平均,返回标量
3. NLL/BCE/BCEWITHLogits Loss
-
2.nn.NLLLoss
- 功能:实现负对数似然函数的负号功能
- 主要参数:
- weight:各类别的loss设置权值
- ignore_index:忽略某个类别
- reduction:计算模式,可为none/sum/mean
- none:逐个元素计算
- sum:所有元素求和,返回标量
- mean:加权平均,返回标量
-
3.nn.BCELoss
- 功能:二分类交叉熵,输入值取值在[0,1]
- 主要参数:
- weight:各类别的loss设置权值
- ignore_index:忽略某个类别
- reduction:计算模式,可为none/sum/mean
- none:逐个元素计算
- sum:所有元素求和,返回标量
- mean:加权平均,返回标量
-
4.BCEWITHLogits Loss
- 功能:结合Sigmoid与二分类交叉熵,网络最后不加sigmoid函数
- 主要参数:
- pos_weight:正样本的权值
- weight:各类别的loss设置权值
- ignore_index:忽略某个类别
- reduction:计算模式,可为none/sum/mean
- none:逐个元素计算
- sum:所有元素求和,返回标量
- mean:加权平均,返回标量
数据回归模型中常用的损失函数:
- 5.nn.L1Loss
- 功能:计算inputs与target之差的绝对值
- 公式:
- 6.nn.MSELoss
- 功能:计算inputs与target之差的平方
- 公式:
两个损失函数的主要参数为:
-
reduction:计算模式,可为none/sum/mean
- none:逐个元素计算
- sum:所有元素求和,返回标量
- mean:加权平均,返回标量 -
7.SmoothL1Loss
- 功能:平滑的L1Loss
- 参数:
- reduction:计算模式,可为none/sum/mean
- none:逐个元素计算
- sum:所有元素求和,返回标量
-
mean:加权平均,返回标量
在这里插入图片描述
在这里插入图片描述
- reduction:计算模式,可为none/sum/mean
-
8.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:加权平均,返回标量
在这里插入图片描述
- reduction:计算模式,可为none/sum/mean/batchmean
-
10.nn.MarginRankingLoss
- 功能:计算两个向量之间的相似度,用于排序任务
- 特别说明:该方法计算两组数据之间的差异,返回一个n*n的loss矩阵
- 主要参数:
- margin:边界值,x1与x2之间的差异值
-
reduction:计算模式,可为none/sum/mean
在这里插入图片描述
-
11.nn.MultiLabelMarginLoss
- 功能:多标签边界损失函数
- 主要参数:
- reduction:计算模式
-
示例:四分类任务,样本x输入0类和4类,标签[0,3,-1,-1],不是[1,0,0,1]
在这里插入图片描述
-
12.nn.SoftMarginLoss
- 功能:计算二分类的logistic损失
-
参数:reduction:计算模式
在这里插入图片描述
-
13.nn.MultiLabelSoftMarginLoss
- 功能:SoftMarginLoss多标签版本
- 参数:
- weight:各类别的loss设置权值
-
reduction:计算模式。
在这里插入图片描述
-
14.nn.MultiMarginLoss
- 功能:计算多分类的折页损失
- 参数:
- p:可选1或2
- weight:各类别的loss设置权值
- margin:边界值
-
reduction:计算模式
在这里插入图片描述
在这里插入图片描述
-
15.nn.TripletMarginLoss
- 功能:计算三元组损失,人脸验证中常用
- 主要参数:
- p:范数的阶,默认为2
- margin:边界值
-
reduction:计算模式
在这里插入图片描述
-
16.nn.HingeEmbeddingLoss
- 功能:计算两个输入的相似性,常用于非线性embedding和半监督学习
- 注意:输入x应为两个输入之差的绝对值
- 主要参数:
- margin:边界值
-
reduction:计算模式
在这里插入图片描述
-
17.nn.CosineEmbeddingLoss
- 功能:采用余弦相似度计算两个输入的相似性
- 主要参数:
- margin:可取值[-1, 1],推荐为[0, 0.5]
-
reduction: 计算模式
在这里插入图片描述
-
18.nn.CTCLoss
- 功能:计算CTC损失,解决时序类数据的分类
- 主要参数:
- blank:blank label
- zero_infinity:无穷大的值或梯度置0
- reduction:计算模式