文章目录
- 损失函数概念
- 损失函数种类
- 1、nn.CrossEntropyLoss
- 2、 nn.NLLLoss
- 3、 nn.BCELoss
- 4、 nn.BCEWithLogitsLoss
- 5. nn.L1Loss
- 6. nn.MSELoss
- 7. nn.SmoothL1Loss
- 8. nn.PoissonNLLLoss
- 9. nn.KLDivLoss
- 10. nn.MarginRankingLoss
- 11. nn.MultiLabelMarginLoss
- 12. nn.SoftMarginLoss
- 13. nn.MultiLabelSoftMarginLoss
- 14. nn.MultiMarginLoss
- 15. nn.TripletMarginLoss
- 16. nn.HingeEmbeddingLoss
- 17. nn.CosineEmbeddingLoss
- 18. nn.CTCLoss
损失函数概念
损失函数:衡量模型输出与真实标签的差异
正则项
正则项是通过权值来平衡模型中明显特征和不明显特征,使模型不会过拟合
损失函数种类
1、nn.CrossEntropyLoss
功能: nn.LogSoftmax ()与nn.NLLLoss ()结合,进行
交叉熵计算
主要参数:
• w eigh t:各类别的loss设置权值
• igno re _ind e x:忽略某个类别
• redu c tion :计算模式,可为none/sum /m e an
none- 逐个元素计算
sum- 所有元素求和,返回标量
m e an- 加权平均,返回标量
2、 nn.NLLLoss
功能:实现负对数似然函数中的负号功能
主要参数:
• weigh t:各类别的loss设置权值
• igno re _ind e x:忽略某个类别
• redu c tion :计算模式,可为none/sum /m e an
none-逐个元素计算
sum-所有元素求和,返回标量
m e an-加权平均,返回标量
3、 nn.BCELoss
功能:二分类交叉熵
注意事项:输入值取值在[0,1]
主要参数:
• w eigh t:各类别的loss设置权值
• igno re _ind e x:忽略某个类别
• redu c tion :计算模式,可为none/sum /m e an
4、 nn.BCEWithLogitsLoss
功能:结合Sigmoid与二分类交叉熵
注意事项:网络最后不加sigmoid函数
主要参数:
• pos _w eigh t :正样本的权值
• weigh t:各类别的loss设置权值
• igno re _ind e x:忽略某个类别
• redu c tion :计算模式,可为none/sum /m e an
5. nn.L1Loss
功能:计算inputs与target之差的绝对值
6. nn.MSELoss
功能:计算inputs与target之差的平方
主要参数:
- reduction
7. nn.SmoothL1Loss
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维度求平均值
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
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