阅读 2585

pytorch常用损失函数criterion

1635735552(1).png

监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归

L1损失函数

调用函数:nn.L1Loss 复制代码

计算 output 和 target 之差的绝对值 2021051310213817.png

torch.nn.L1Loss(reduction='mean') 复制代码

L2损失函数MSELoss--- 回归问题

调用函数:nn.MSELoss 复制代码
torch.nn.MSELoss(reduction='mean') 复制代码

均方误差-----由于梯度计算过程与sigmoid函数相关,因此反向传播过程可能会发生梯度消失的问题,即梯度趋向于0

2021051310213818.png

Huber Loss损失函数

调用函数:nn.SmoothL1Loss 复制代码

L1和L2损失函数的综合版本,结合了两者的优点---与MSELoss相比,它对异常值的敏感度较低; 在某些情况下,它可以防止梯度的爆炸式增长

2021051310213819.png

‘二分类’交叉熵损失函数BCELoss

调用函数: nn.BCELoss   # 使用时要结合sigmoid函数 nn.BCEWithLogitsLoss()  # 将sigmoid函数和BCELoss方法结合到一个类中 复制代码

2021051310213820.png 度量两个概率分布间的差异性信息,在某一程度上也可以防止梯度学习过慢

torch.nn.BCELoss(weight=None, reduction='mean') 复制代码

‘多分类’交叉熵损失函数

调用函数: nn.NLLLoss   # 使用时要结合log softmax nn.CrossEntropyLoss  # 该criterion将nn.LogSoftmax()和nn.NLLLoss()方法结合到一个类中 复制代码

度量两个概率分布间的差异性信息---

CrossEntropyLoss() = softmax + log + NLLLoss() = log_softmax + NLLLoss(), 具体等价应用如下:

####################---CrossEntropyLoss()---####################### loss_func = CrossEntropyLoss() loss = loss_func(output, target) ####################---Softmax+log+NLLLoss()---#################### self.softmax = nn.Softmax(dim=-1) x = self.softmax(x) output = torch.log(x) loss_func = NLLLoss() loss = loss_func(output, target) ####################---LogSoftmax+NLLLoss()---###################### self.log_softmax = nn.LogSoftmax(dim=-1) output = self.log_softmax(x) loss_func = NLLLoss() loss = loss_func(output, target) 复制代码


作者:DLung
链接:https://juejin.cn/post/7025444819379945503


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐