smooth_l1_loss¶
- paddle.nn.functional. smooth_l1_loss ( input, label, reduction='mean', delta=1.0, is_huber=True, name=None ) ¶
计算输入 input 和标签 label 间的 SmoothL1 损失,如果逐个元素的绝对误差低于 1,则创建使用平方项的条件, 否则为 L1 损失。在某些情况下,它可以防止梯度爆炸,也称为 Huber 损失,该损失函数的数学计算公式如下:
\(z_i\) 的计算公式如下:
参数¶
input (Tensor) - 输入 Tensor,数据类型为 float32。其形状为 \([N, C]\),其中 \(C\) 为类别数。对于多维度的情形下,它的形状为 \([N, C, d_1, d_2, ..., d_k]\),\(k \geqslant 1\)。
label (Tensor) - 输入
input
对应的标签值,数据类型和input
相同。reduction (str,可选) - 指定应用于输出结果的计算方式,数据类型为 string,可选值有
none
、mean
、sum
。默认为mean
,计算mini-batch
loss 均值。设置为sum
时,计算mini-batch
loss 的总和。设置为none
时,则返回 loss Tensor。delta (str,可选) - SmoothL1Loss 损失的阈值参数 \(\delta\),用于控制 Huber 损失对线性误差或平方误差的侧重。数据类型为 float32。默认值为 1.0。
is_huber (bool,可选) - 如果为 True,则使用 Huber 损失。如果为 False, 则使用 Huber 损失除以 delta 值。默认为 True。
name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
返回¶
Tensor,返回计算 smooth_l1_loss 后的损失值。
代码示例¶
COPY-FROM: paddle.nn.functional.smooth_l1_loss