这篇文章主要为大家详细介绍了Python之pytorch常用的损失函数用法的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的雯雯来看看吧!
pytorch中的nn模块提供了很多可以直接使用的loss函数, 比如MSELoss(), CrossEntropyLoss(), NLLLoss() 等
官方链接: https://pytorch.org/docs/stable/_modules/torch/nn/modules/loss.html
损失函数 | 名称 | 适用场景 |
---|---|---|
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' )
pytorch中常用的损失函数用法说明
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)
pytorch中常用的损失函数用法说明
代码如下:
torch.nn.NLLLoss(weight=None,
size_average=None,
ignore_index=-100,
reduce=None,
reduction='mean')
pytorch中常用的损失函数用法说明
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)
pytorch中常用的损失函数用法说明
总之, 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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持四海网。
本文来自:http://www.q1010.com/181/18842-0.html
注:关于Python之pytorch常用的损失函数用法的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:python
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。