佛山新网站建设价格,好的案例展示网站,宣传片策划拍摄制作公司,网页设计的主题有哪些深度学习#xff1a;Pytorch常见损失函数Loss简介 L1 LossMSE LossSmoothL1 LossCrossEntropy LossFocal Loss 此篇博客主要对深度学习中常用的损失函数进行介绍#xff0c;并结合Pytorch的函数进行分析#xff0c;讲解其用法。
L1 Loss
L1 Loss计算预测值和真值的平均绝对… 深度学习Pytorch常见损失函数Loss简介 L1 LossMSE LossSmoothL1 LossCrossEntropy LossFocal Loss 此篇博客主要对深度学习中常用的损失函数进行介绍并结合Pytorch的函数进行分析讲解其用法。
L1 Loss
L1 Loss计算预测值和真值的平均绝对误差。 L o s s ( y , y ^ ) ∣ y − y ^ ∣ Loss(y,\hat{y}) |y-\hat{y}| Loss(y,y^)∣y−y^∣
Pytorch函数
torch.nn.L1Loss(size_averageNone, reduceNone, reductionmean)参数
size_average (bool, optional) – 此参数已弃用reduce (bool, optional) – 此参数已弃用reduction (str, optional) – 由以下三个参数选其一‘none’ | ‘mean’ | ‘sum’. ‘none’不对各个元素的误差处理 ‘mean’输出是各个元素误差的平均值‘sum’输出是将各个元素的误差求和。 默认‘mean’。
MSE Loss
MSE Loss计算预测值和真值的均方误差。 L o s s ( y , y ^ ) ( y − y ^ ) 2 Loss(y,\hat{y}) (y-\hat{y})^2 Loss(y,y^)(y−y^)2
Pytorch函数
torch.nn.MSELoss(size_averageNone, reduceNone, reductionmean)参数
size_average (bool, optional) – 此参数已弃用。reduce (bool, optional) – 此参数已弃用。reduction (str, optional) – 由以下三个参数选其一‘none’ | ‘mean’ | ‘sum’. ‘none’不对各个元素的误差处理 ‘mean’输出是各个元素误差的平均值‘sum’输出是将各个元素的误差求和。 默认‘mean’。
SmoothL1 Loss
在训练初期当预测值和真值相差较大时损失函数的值较大容易导致训练不稳定为了防止梯度爆炸梯度值是指损失函数对输入的导数梯度爆炸是指梯度值很大同时当预测值和真值相差较小时梯度值足够小可以使用SmoothL1 Loss它可以视作L1 Loss和L2 LossMSE Loss的结合计算公式如下
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ Loss(y,\hat{y}…
Pytorch函数
torch.nn.SmoothL1Loss(size_averageNone, reduceNone, reductionmean, beta1.0)参数
size_average (bool, optional) – 此参数已弃用。reduce (bool, optional) – 此参数已弃用。reduction (str, optional) – 由以下三个参数选其一‘none’ | ‘mean’ | ‘sum’. ‘none’不对各个元素的误差处理 ‘mean’输出是各个元素误差的平均值‘sum’输出是将各个元素的误差求和。 默认‘mean’。beta ( float ,optional) – 指定 L1 Loss和 L2 Loss之间变化的阈值。该值必须是非负数。默认值1.0
CrossEntropy Loss
CrossEntropy Loss是在处理分类问题中常用的一种损失函数如二分类和多分类。此函数来源于信息论中的交叉熵概念用于衡量两个预估概率分布和真实概率分布之间的差异。交叉熵损失函数公式如下 1对于二分类问题 L o s s ( y , y ^ ) − ∑ i 1 n ( y i l o g ( y i ^ ) ( 1 − y i ) l o g ( 1 − y i ^ ) ) Loss(y,\hat{y}) -\sum_{i1}^{n}(y_ilog(\hat{y_i})(1-y_i)log(1-\hat{y_i})) Loss(y,y^)−i1∑n(yilog(yi^)(1−yi)log(1−yi^)) 其中 y y y是真值 y ^ \hat{y} y^是预测值n是样本的数量每个样本都会计算一个损失如果reduction是‘mean’那么会对所有样本的损失求平均如果reduction是‘sum’那么会对所有样本的损失求和。 2对于多分类问题 L o s s ( y , y ^ ) − ∑ i 1 n ∑ j 1 m y i j l o g ( y i j ^ ) Loss(y,\hat{y}) - \sum_{i1}^{n}\sum_{j1}^{m}y_{ij}log(\hat{y_{ij}}) Loss(y,y^)−i1∑nj1∑myijlog(yij^) 其中 y i j y_{ij} yij是第i个样本的真实标签在第j类的概率 y i j ^ \hat{y_{ij}} yij^是第i个样本预测为第j类的概率n是样本数量m是类别的数量每个样本都会计算一个损失如果reduction是‘mean’那么会对所有样本的损失求平均如果reduction是‘sum’那么会对所有样本的损失求和。
Pytorch函数
torch.nn.CrossEntropyLoss(weightNone, size_averageNone, ignore_index- 100, reduceNone, reductionmean, label_smoothing0.0)参数
weight (Tensor, optional) – 为每个类指定的手动缩放权重。如果给定则必须是大小为C的张量。size_average (bool, optional) – 此参数已弃用。ignore_index (int, optional) – 指定被忽略且不会对输入梯度产生影响的目标值。reduce (bool, optional) – 此参数已弃用。reduction (str, optional) – 由以下三个参数选其一‘none’ | ‘mean’ | ‘sum’. ‘none’不对各个元素的误差处理 ‘mean’输出是各个元素误差的平均值‘sum’输出是将各个元素的误差求和。 默认‘mean’。label_smoothing (float, optional) – [0.0, 1.0] 中的浮点数。指定计算损失时的平滑量其中 0.0 表示不平滑。默认值: 0.0.
Focal Loss
Focal Loss主要用来处理正负样本特别是前景和背景样本的分类不均衡的问题。样本不均衡会导致训练效率低甚至可能会导致模型退化。Focal Loss可以视为对CrossENtropy Loss增加权重加以平衡增加预测概率小的样本权重其对应的损失函数值变大反而降低预测概率大的样本权重其对应的损失函数值变小。参考公式如下 L o s s ( y , y ^ ) − ∑ i 1 n ∑ j 1 m ( 1 − y i j ^ ) γ y i j l o g ( y i j ^ ) Loss(y,\hat{y}) - \sum_{i1}^{n}\sum_{j1}^{m}(1-\hat{y_{ij}})^{\gamma}y_{ij}log(\hat{y_{ij}}) Loss(y,y^)−i1∑nj1∑m(1−yij^)γyijlog(yij^) 其中 γ \gamma γ常取2.