Pytorch常用损失函数nn.BCEloss();nn.BCEWithLogitsLoss();nn.CrossEntropyLoss();nn.L1Loss(); nn.MSELoss();(代码
Posted 小葵花幼儿园园长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytorch常用损失函数nn.BCEloss();nn.BCEWithLogitsLoss();nn.CrossEntropyLoss();nn.L1Loss(); nn.MSELoss();(代码相关的知识,希望对你有一定的参考价值。
nn.BCEloss()
- 衡量输出与目标之间的二分类交叉熵
- 功能:二分类交叉熵,输入值取值在[0,1]
torch.torch.nn.BCELoss(weight=None, reduction='mean')
weight
: 默认None,用于计算损失的手动尺度化的权重、张量reduction
:默认mean
, 指定用于输出的缩减方式,另可选:none、sum;none:不应用缩减,mean:输出的和除以输出内元素数;sum:输出加和- 输入:input – 形状为 ( N , ∗ ) \\left ( N,* \\right ) (N,∗),N为样本数量,*为任意其他维度
- 输入:target – 形状 ( N , ∗ ) \\left ( N,* \\right ) (N,∗),形状同input
- 输出:output – 标量(reduction若为none,则形状同input)
nn.BCEWithLogitsLoss()
-
此损失函数将 Sigmoid 层和 BCELoss 整合在一起
-
比简单地将 Sigmoid 层加上 BCELoss 损失更稳定,因为使用了
log-sun-exp
技巧获得数值稳定性
torch.nn.BCEWithLogitsLoss(
weight=None,
reduction='mean',
pos_weight=None
)
-
weight
:默认 None,用于计算损失的手动尺度化的权重,张量 -
reduction
:默认 ‘mean’,指定应用于输出的缩减方式,另可选 ‘none’,‘sum’;‘none’:不应用缩减;‘mean’:输出的和除以输出内元素数;‘sum’:输出加和 -
pos_weight
:默认 None,正例的权重,需为长度为类别数的向量; -
输入:input – 形状为,为样本数量,为任意其他维度
-
输入:target – 形状,形状同input
-
输出:output – 标量(reduction若为none,则形状同input)
nn.CrossEntropyLoss
nn.CrossEntropyLoss(
weight=None,
size_average=None,
ignore_index=-100,
reduce=None,
reduction=‘mean’
)
weight
:各类别的loss设置权值ignore_index
:忽略某个类别reduction
:计算模式,可为none/sum/mean,none- 逐个元素计算,sum- 所有元素求和,返回标量,mean- 加权平均,返回标量
nn.L1Loss
- 功能: 计算inputs与target之差的绝对值
nn.MSELoss
- 功能: 计算inputs与target之差的平方
nn.KLDivLoss
- 功能:计算KLD(divergence),KL散度,相对熵
- 注意事项:需提前将输入计算 log-probabilities,如通过nn.logsoftmax()
以上是关于Pytorch常用损失函数nn.BCEloss();nn.BCEWithLogitsLoss();nn.CrossEntropyLoss();nn.L1Loss(); nn.MSELoss();(代码的主要内容,如果未能解决你的问题,请参考以下文章
详解pytorch中的交叉熵损失函数nn.BCELoss()nn.BCELossWithLogits(),二分类任务如何定义损失函数,如何计算准确率如何预测
pytorch 交叉熵损失教程(3)-torch.nn.BCELoss
小曾带你深入浅出机器学习(小白入门必备,近3万字带你了解机器学习)