pytorch中损失函数有哪些?一文带你快速了解
Admin 2021-08-21 群英技术资讯 809 次浏览
这篇文章主要介绍pytorch中常用损失函数以及用法,对新手学习pytorch中损失函数有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章能有所收获,接下来小编带着大家一起了解看看。
pytorch中的nn模块提供了很多可以直接使用的loss函数, 比如MSELoss(), CrossEntropyLoss(), NLLLoss() 等
pytorch中常用的损失函数损失函数 | 名称 | 适用场景 |
---|---|---|
torch.nn.MSELoss() | 均方误差损失 | 回归 |
torch.nn.L1Loss() | 平均绝对值误差损失 | 回归 |
torch.nn.CrossEntropyLoss() | 交叉熵损失 | 多分类 |
torch.nn.NLLLoss() | 负对数似然函数损失 | 多分类 |
torch.nn.NLLLoss2d() | 图片负对数似然函数损失 | 图像分割 |
torch.nn.KLDivLoss() | KL散度损失 | 回归 |
torch.nn.BCELoss() | 二分类交叉熵损失 | 二分类 |
torch.nn.MarginRankingLoss() | 评价相似度的损失 | |
torch.nn.MultiLabelMarginLoss() | 多标签分类的损失 | 多标签分类 |
torch.nn.SmoothL1Loss() | 平滑的L1损失 | 回归 |
torch.nn.SoftMarginLoss() | 多标签二分类问题的损失 | 多标签二分类 |
torch.nn.CrossEntropyLoss(weight=None, # 1D张量,含n个元素,分别代表n类的权重,样本不均衡时常用 size_average=None, ignore_index=-100, reduce=None, reduction='mean' )
参数:
weight: 1D张量,含n个元素,分别代表n类的权重,样本不均衡时常用, 默认为None.
计算公式:
weight = None时:
weight ≠ None时:
输入:
output: 网络未加softmax的输出
target: label值(0,1,2 不是one-hot)
代码:
loss_func = CrossEntropyLoss(weight=torch.from_numpy(np.array([0.03,0.05,0.19,0.26,0.47])).float().to(device) ,size_average=True) loss = loss_func(output, target)
torch.nn.NLLLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')
输入:
output: 网络在logsoftmax后的输出
target: label值(0,1,2 不是one-hot)
代码:
loss_func = NLLLoss(weight=torch.from_numpy(np.array([0.03,0.05,0.19,0.26,0.47])).float().to(device) ,size_average=True) loss = loss_func(output, target)
总之, 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)
补充:常用损失函数用法小结之Pytorch框架
在用深度学习做图像处理的时候,常用到的损失函数无非有四五种,为了方便Pytorch使用者,所以简要做以下总结
预测值与标签值进行相差,然后取绝对值,根据实际应用场所,可以设置是否求和,求平均,公式可见下,Pytorch调用函数:nn.L1Loss
预测值与标签值进行相差,然后取平方,根据实际应用场所,可以设置是否求和,求平均,公式可见下,Pytorch调用函数:nn.MSELoss
简单来说就是L1和L2损失函数的综合版本,结合了两者的优点,公式可见下,Pytorch调用函数:nn.SmoothL1Loss
简单来说,就是度量两个概率分布间的差异性信息,在某一程度上也可以防止梯度学习过慢,公式可见下,Pytorch调用函数有两个,一个是nn.BCELoss函数,用的时候要结合Sigmoid函数,另外一个是nn.BCEWithLogitsLoss()
也是度量两个概率分布间的差异性信息,Pytorch调用函数也有两个,一个是nn.NLLLoss,用的时候要结合log softmax处理,另外一个是nn.CrossEntropyLoss
关于pytorch中损失函数有哪些就介绍到这,上述实例具有一定的参考价值,感兴趣的朋友可以参考学习,希望能对大家有帮助,想要了解更多pytorch中损失函数的相关内容,大家可以关注其他文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要介绍了pandas实现数据合并的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,下面这篇文章主要给大家介绍了关于Python自动化测试之异常处理机制的相关资料,需要的朋友可以参考下
这篇文章主要介绍了python 共现矩阵的实现代码,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要为大家介绍了OpenCV学习记录python实现连通域处理函数cv2.connectedComponentsWithStats()和cv2.connectedComponents()的使用示例详解
大家好,本篇文章主要讲的是Python中引用传参四种方式介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008