HuberLoss¶
- class torch.nn.HuberLoss(reduction='mean', delta=1.0)[source][source]¶
创建一个使用平方项的损失函数,如果元素级绝对误差低于 delta,则使用 delta 缩放的 L1 项。这种损失函数结合了
L1Loss
和MSELoss
的优点;delta 缩放的 L1 区域使得损失对异常值不如MSELoss
敏感,而 L2 区域在 0 附近提供平滑性。有关 Huber 损失更多信息,请参阅 Huber 损失。对于批次大小为 的情况,未归一化的损失可以描述为:
替换为
如果归一化不是 none,则:
注意
当 delta 设置为 1 时,此损失与
SmoothL1Loss
等价。一般来说,此损失与SmoothL1Loss
相比,相差 delta(即 Smooth L1 中的 beta)倍。参见SmoothL1Loss
以了解两种损失在行为上的差异讨论。- 参数:
reduction(字符串,可选)- 指定应用于输出的归一化方式:
'none'
|'mean'
|'sum'
。'none'
:不应用归一化,'mean'
:输出总和将被除以输出中的元素数量,'sum'
:输出将被求和。默认:'mean'
delta(浮点数,可选)- 指定在 delta 缩放 L1 和 L2 损失之间切换的阈值。该值必须是正数。默认:1.0
- 形状:
输入: 其中 表示任意数量的维度。
目标: ,与输入形状相同。
输出:标量。如果
reduction
是'none'
,则 ,与输入具有相同的形状。