快捷方式

HuberLoss

class torch.nn.HuberLoss(reduction='mean', delta=1.0)[source][source]

创建一个标准,如果逐元素绝对误差低于 delta,则使用平方项;否则使用 delta 缩放的 L1 项。此损失结合了 L1LossMSELoss 的优点;delta 缩放的 L1 区域使损失对异常值不如 MSELoss 敏感,而 L2 区域在 0 附近提供了比 L1Loss 更高的平滑度。有关更多信息,请参见 Huber 损失

对于大小为 NN 的批次,未缩减的损失可以描述为

(x,y)=L={l1,...,lN}T\ell(x, y) = L = \{l_1, ..., l_N\}^T

其中

ln={0.5(xnyn)2,如果 xnyn<deltadelta(xnyn0.5delta),否则 l_n = \begin{cases} 0.5 (x_n - y_n)^2, & \text{if } |x_n - y_n| < delta \\ delta * (|x_n - y_n| - 0.5 * delta), & \text{otherwise } \end{cases}

如果 reduction 不是 none,则

(x,y)={mean(L),如果 reduction=‘mean’;sum(L),如果 reduction=‘sum’。\ell(x, y) = \begin{cases} \operatorname{mean}(L), & \text{if reduction} = \text{`mean';}\\ \operatorname{sum}(L), & \text{if reduction} = \text{`sum'.} \end{cases}

注意

当 delta 设置为 1 时,此损失等效于 SmoothL1Loss。通常,此损失与 SmoothL1Loss 的区别在于 delta 系数(在 Smooth L1 中也称为 beta)。有关两种损失之间行为差异的更多讨论,请参见 SmoothL1Loss

参数
  • reduction (str, optional) – 指定应用于输出的缩减方式: 'none' | 'mean' | 'sum''none': 不会应用缩减, 'mean': 输出的总和将被输出中元素数量除以, 'sum': 输出将被求和。默认值: 'mean'

  • delta (float, optional) – 指定在 delta 缩放的 L1 损失和 L2 损失之间切换的阈值。该值必须为正数。默认值: 1.0

形状
  • 输入: ()(*) 其中 * 表示任意数量的维度。

  • 目标: ()(*),与输入形状相同。

  • 输出: 标量。如果 reduction'none',则 ()(*),与输入形状相同。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得您的问题解答

查看资源