diff --git a/doc/fluid/api/nn/loss.rst b/doc/fluid/api/nn/loss.rst index a46b76ab27ba2712a3fb0ff8a49cd47c9d97ea4e..a15327683a58831db3f85640c4f147ae52d4409f 100644 --- a/doc/fluid/api/nn/loss.rst +++ b/doc/fluid/api/nn/loss.rst @@ -10,4 +10,5 @@ loss loss/L1Loss.rst loss/MSELoss.rst loss/NLLLoss.rst + loss/SmoothL1Loss.rst loss/CTCLoss.rst diff --git a/doc/fluid/api/nn/loss/SmoothL1Loss.rst b/doc/fluid/api/nn/loss/SmoothL1Loss.rst new file mode 100644 index 0000000000000000000000000000000000000000..7f5654a5587bde56359b2c59fd5c6a4df5a08208 --- /dev/null +++ b/doc/fluid/api/nn/loss/SmoothL1Loss.rst @@ -0,0 +1,13 @@ +.. THIS FILE IS GENERATED BY `gen_doc.{py|sh}` + !DO NOT EDIT THIS FILE MANUALLY! + +.. _api_nn_loss_SmoothL1Loss: + +SmoothL1Loss +------------------------------- + +.. autoclass:: paddle.nn.loss.SmoothL1Loss + :members: + :inherited-members: + :noindex: + diff --git a/doc/fluid/api_cn/nn_cn/loss_cn.rst b/doc/fluid/api_cn/nn_cn/loss_cn.rst index 1ec2a89a9b689e20f8fef6dc09f7213ccb3d8c54..951c3e976a8305fc18dabaad58c5fd6a7d1a3bb3 100644 --- a/doc/fluid/api_cn/nn_cn/loss_cn.rst +++ b/doc/fluid/api_cn/nn_cn/loss_cn.rst @@ -14,4 +14,5 @@ loss loss_cn/MarginRankingLoss_cn.rst loss_cn/MSELoss_cn.rst loss_cn/NLLLoss_cn.rst + loss_cn/SmoothL1Loss.rst loss_cn/CTCLoss_cn.rst diff --git a/doc/fluid/api_cn/nn_cn/loss_cn/SmoothL1Loss_cn.rst b/doc/fluid/api_cn/nn_cn/loss_cn/SmoothL1Loss_cn.rst new file mode 100644 index 0000000000000000000000000000000000000000..8a5fee1e07cb45a055fc2eb65b45233d1ca6cbdd --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/loss_cn/SmoothL1Loss_cn.rst @@ -0,0 +1,52 @@ +SmoothL1Loss +------------------------------- + +.. py:class:: paddle.nn.loss.SmoothL1Loss(reduction='mean', delta=1.0, name=None) + +该OP计算输入input和标签label间的SmoothL1损失,如果逐个元素的绝对误差低于1,则创建使用平方项的条件 +,否则为L1损失。在某些情况下,它可以防止爆炸梯度, 也称为Huber损失,该损失函数的数学计算公式如下: + + .. math:: + loss(x,y)=\\frac{1}{n}\\sum_{i}z_i + +`z_i`的计算公式如下: + + .. math:: + + \\mathop{z_i}=\\left\\{\\begin{array}{rcl} + 0.5(x_i - y_i)^2 & & {if |x_i - y_i| < delta} \\\\ + delta * |x_i - y_i| - 0.5 * delta^2 & & {otherwise} + \\end{array} \\right. + +参数 +:::::::::: + - **reduction** (string, 可选): - 指定应用于输出结果的计算方式,数据类型为string,可选值有: `none`, `mean`, `sum` 。默认为 `mean` ,计算 `mini-batch` loss均值。设置为 `sum` 时,计算 `mini-batch` loss的总和。设置为 `none` 时,则返回loss Tensor。 + - **delta** (string, 可选): SmoothL1Loss损失的阈值参数,用于控制Huber损失对线性误差或平方误差的侧重。数据类型为float32。 默认值= 1.0。 + - **name** (string, 可选): - 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name`。 + +调用参数 +:::::::::: + - **input** (Tensor): 输入 `Tensor`, 数据类型为float32。其形状为 :math:`[N, C]` , 其中 `C` 为类别数。对于多维度的情形下,它的形状为 :math:`[N, C, d_1, d_2, ..., d_k]`,k >= 1。 + - **label** (Tensor): 输入input对应的标签值,数据类型为float32。数据类型和input相同。 + + + +返回:返回计算 `SmoothL1Loss` 后的损失值。 + +返回类型:Tensor + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + input = np.random.rand(3,3).astype("float32") + label = np.random.rand(3,3).astype("float32") + input = paddle.to_tensor(input_data) + label = paddle.to_tensor(label_data) + loss = paddle.nn.SmoothL1Loss() + output = loss(input, label) + print(output.numpy()) diff --git a/doc/fluid/api_cn/nn_cn/smooth_l1_loss_cn.rst b/doc/fluid/api_cn/nn_cn/smooth_l1_loss_cn.rst new file mode 100644 index 0000000000000000000000000000000000000000..50e419b69b7e9d55ff26b5668b3de02e7b098128 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/smooth_l1_loss_cn.rst @@ -0,0 +1,48 @@ +smooth_l1_loss +------------------------------- + +.. py:function:: paddle.nn.functional.smooth_l1_loss(input, label, reduction='mean', delta=1.0, name=None) + +该OP计算输入input和标签label间的SmoothL1损失,如果逐个元素的绝对误差低于1,则创建使用平方项的条件 +,否则为L1损失。在某些情况下,它可以防止爆炸梯度, 也称为Huber损失,该损失函数的数学计算公式如下: + + .. math:: + loss(x,y)=\\frac{1}{n}\\sum_{i}z_i + +`z_i`的计算公式如下: + + .. math:: + + \\mathop{z_i}=\\left\\{\\begin{array}{rcl} + 0.5(x_i - y_i)^2 & & {if |x_i - y_i| < delta} \\\\ + delta * |x_i - y_i| - 0.5 * delta^2 & & {otherwise} + \\end{array} \\right. + +参数 +:::::::::: + - **input** (Tensor): 输入 `Tensor`, 数据类型为float32。其形状为 :math:`[N, C]` , 其中 `C` 为类别数。对于多维度的情形下,它的形状为 :math:`[N, C, d_1, d_2, ..., d_k]`,k >= 1。 + - **label** (Tensor): 输入input对应的标签值,数据类型为float32。数据类型和input相同。 + - **reduction** (string, 可选): - 指定应用于输出结果的计算方式,数据类型为string,可选值有: `none`, `mean`, `sum` 。默认为 `mean` ,计算`mini-batch` loss均值。设置为 `sum` 时,计算 `mini-batch` loss的总和。设置为 `none` 时,则返回loss Tensor。 + - **delta** (string, 可选): SmoothL1Loss损失的阈值参数,用于控制Huber损失对线性误差或平方误差的侧重。数据类型为float32。 默认值= 1.0。 + - **name** (string,可选) - 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name`。 + + + +返回:返回计算 `smooth_l1_loss` 后的损失值。 + +返回类型:Tensor + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + input = np.random.rand(3,3).astype("float32") + label = np.random.rand(3,3).astype("float32") + input = paddle.to_tensor(input_data) + label = paddle.to_tensor(label_data) + output = paddle.nn.functioanl.smooth_l1_loss(input,label) + print(output.numpy())