Skip to content

补充GaussianNLLLoss中文文档。;test=docs_preview #5623

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Apr 13, 2023
2 changes: 2 additions & 0 deletions docs/api/api_label
Original file line number Diff line number Diff line change
Expand Up @@ -911,6 +911,7 @@ paddle.nn.Unfold .. _api_paddle_nn_Unfold:
paddle.nn.LogSoftmax .. _api_paddle_nn_LogSoftmax:
paddle.nn.Maxout .. _api_paddle_nn_Maxout:
paddle.nn.BatchNorm3D .. _api_paddle_nn_BatchNorm3D:
paddle.nn.GaussianNLLLoss .. _api_paddle_nn_GaussianNLLLoss
paddle.nn.functional.adaptive_max_pool3d .. _api_paddle_nn_functional_adaptive_max_pool3d:
paddle.nn.functional.glu .. _api_paddle_nn_functional_glu:
paddle.nn.functional.silu .. _api_paddle_nn_functional_silu:
Expand Down Expand Up @@ -990,6 +991,7 @@ paddle.nn.functional.pad .. _api_paddle_nn_functional_pad:
paddle.nn.functional.sigmoid_focal_loss .. _api_paddle_nn_functional_sigmoid_focal_loss:
paddle.nn.functional.hardsigmoid .. _api_paddle_nn_functional_hardsigmoid:
paddle.nn.functional.max_pool3d .. _api_paddle_nn_functional_max_pool3d:
paddle.nn.functional.gaussian_nll_loss .. _api_nn_paddle_functional_gaussian_nll_loss:
paddle.nn.initializer.KaimingUniform .. _api_paddle_nn_initializer_KaimingUniform:
paddle.nn.initializer.KaimingNormal .. _api_paddle_nn_initializer_KaimingNormal:
paddle.nn.initializer.Assign .. _api_paddle_nn_initializer_Assign:
Expand Down
44 changes: 44 additions & 0 deletions docs/api/paddle/nn/GaussianNLLLoss_cn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
.. _cn_api_paddle_nn_GaussianNLLLoss:

GaussianNLLLoss
-------------------------------

.. py:class:: paddle.nn.GaussianNLLLoss(full=False, epsilon=1e-6, reduction='mean', name=None)

该接口创建一个 GaussianNLLLoss 实例,计算输入 :attr:`input` 和标签 :attr:`label`、 :attr:`variance` 间的 GaussianNLL 损失,
:attr:`label` 被视为服从高斯分布的样本,期望 :attr:`input` 和方差 :attr:`variance` 由神经网络预测给出。
对于一个具有高斯分布的 Tensor :attr:`label`,期望 :attr:`input` 和正方差 :attr:`var` 与其损失的数学计算公式如下:

.. math::
\text{loss} = \frac{1}{2}\left(\log\left(\text{max}\left(\text{var},
\ \text{epsilon}\right)\right) + \frac{\left(\text{input} - \text{label}\right)^2}
{\text{max}\left(\text{var}, \ \text{epsilon}\right)}\right) + \text{const.}

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在英文文档中还有如下描述,在中文文档中确实。按照中英文文档严格一致的要求,请添加相关描述~或者说清楚不一致的原因
image

其中, :attr:`epsilon` 是一个很小的数字,用于保证数值的稳定性。默认情况下,常数项将会被忽略,除非 :attr:`epsilon` 为 True。
若 :attr:`variance` 与 :attr:`input` 的形状不一致,则必须要服从广播机制。

参数
::::::::::

- **full** (bool,可选) - 是否在损失计算中包括常数项。默认情况下为 False,表示忽略最后的常数项。
- **epsilon** (float,可选) - 一个很小的数字,用于限制 variance 的值,使其不会导致除 0 的出现。默认值为 1e-6。
- **reduction** (str,可选) - 指定应用于输出结果的计算方式,可选值有 ``none``、``mean`` 和 ``sum``。默认为 ``mean``,计算 ``mini-batch`` loss 均值。设置为 ``sum`` 时,计算 ``mini-batch`` loss 的总和。设置为 ``none`` 时,则返回 loss Tensor。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

形状
::::::::::

- **input** (Tensor):输入 :attr:`Tensor`,其形状为 :math:`(N, *)` 或者 :math:`(*)`,其中 :math:`*` 表示任何数量的额外维度。数据类型为 float32 或 float64。
- **label** (Tensor):输入 :attr:`Tensor`,其形状为 :math:`(N, *)` 或者 :math:`(*)`,形状与 :attr:`input` 相同,或者维度与 input 相同但最后一维的大小为 1,如 :attr:`input` 的形状为: :math:`(N, 3)` 时, :attr:`input` 的形状可为 :math:`(N, 1)`, 这时会进行 broadcast 操作。数据类型为 float32 或 float64。
- **variance** (Tensor): 输入 :attr:`Tensor`,其形状为 :math:`(N, *)` 或者 :math:`(*)`,形状与 :attr:`input` 相同,或者维度与 input 相同但最后一维的大小为 1,或者维度与 input 相比缺少最后一维,如 :attr:`input` 的形状为: :math:`(N, 3)` 时, :attr:`input` 的形状可为 :math:`(N, 1)` 或 :math:`(N)`, 这时会进行 broadcast 操作。正方差样本,可为不同标签对应不同的方差(异方差性),也可以为同一个方差(同方差性)。数据类型为 float32 或 float64。

返回
:::::::::

- **output** (Tensor) - 输入 :attr:`input`、 :attr:`variance` 和 :attr:`label` 间的 `GaussianNLLLoss` 损失。如果 `reduction` 为 `'none'`,则输出 Loss 形状与输入相同为 `(N, *)`。如果 `reduction` 为 `'sum'` 或者 `'mean'`,则输出 Loss 形状为 `'(1)'` 。


代码示例
:::::::::

COPY-FROM: paddle.nn.GaussianNLLLoss
2 changes: 2 additions & 0 deletions docs/api/paddle/nn/Overview_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ Loss 层
" :ref:`paddle.nn.MarginRankingLoss <cn_api_nn_loss_MarginRankingLoss>` ", "MarginRankingLoss 层"
" :ref:`paddle.nn.MSELoss <cn_api_paddle_nn_MSELoss>` ", "均方差误差损失层"
" :ref:`paddle.nn.NLLLoss <cn_api_nn_loss_NLLLoss>` ", "NLLLoss 层"
" :ref:`paddle.nn.GaussianNLLLoss <cn_api_paddle_nn_GaussianNLLLoss>` ", "GaussianNLLLoss 层"
" :ref:`paddle.nn.PoissonNLLLoss <cn_api_paddle_nn_PoissonNLLLoss>`", "PoissonNLLLoss 层"
" :ref:`paddle.nn.SmoothL1Loss <cn_api_paddle_nn_SmoothL1Loss>` ", "平滑 L1 损失层"
" :ref:`paddle.nn.SoftMarginLoss <cn_api_paddle_nn_SoftMarginLoss>` ", "SoftMarginLoss 层"
Expand Down Expand Up @@ -483,6 +484,7 @@ Embedding 相关函数
" :ref:`paddle.nn.functional.margin_ranking_loss <cn_api_nn_cn_margin_ranking_loss>` ", "用于计算 margin rank loss 损失"
" :ref:`paddle.nn.functional.mse_loss <cn_paddle_nn_functional_mse_loss>` ", "用于计算均方差误差"
" :ref:`paddle.nn.functional.nll_loss <cn_api_nn_functional_nll_loss>` ", "用于计算 nll 损失"
" :ref:`paddle.nn.functional.gaussian_nll_loss <cn_api_paddle_nn_functional_gaussian_nll_loss>` ", "用于计算 gaussiannll 损失"
" :ref:`paddle.nn.functional.npair_loss <cn_api_fluid_layers_npair_loss>` ", "成对数据损失计算"
" :ref:`paddle.nn.functional.sigmoid_focal_loss <cn_api_nn_functional_sigmoid_focal_loss>` ", "用于计算分类任务中前景类-背景类数量不均衡问题的损失"
" :ref:`paddle.nn.functional.smooth_l1_loss <cn_paddle_nn_functional_loss_smooth_l1>` ", "用于计算平滑 L1 损失"
Expand Down
33 changes: 33 additions & 0 deletions docs/api/paddle/nn/functional/gaussian_nll_loss_cn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
.. _cn_api_paddle_nn_functional_gaussian_nll_loss:

gaussian_nll_loss
-------------------------------
.. py:function:: paddle.nn.functional.gaussian_nll_loss(input, label, variance, full=False, epsilon=1e-6, reduction='mean', name=None)

计算输入 :attr:`input` 、:attr:`variance` 和标签 :attr:`label` 间的 GaussianNLL 损失,
:attr:`label` 被视为高斯分布的样本,其期望 :attr:`input` 和方差 :attr:`variance` 由神经网络预测给出。
对于一个具有高斯分布的 Tensor :attr:`label`,期望 :attr:`input` 和正方差 :attr:`var` 与其损失的数学计算公式如下:

.. math::
\text{loss} = \frac{1}{2}\left(\log\left(\text{max}\left(\text{var},
\ \text{epsilon}\right)\right) + \frac{\left(\text{input} - \text{label}\right)^2}
{\text{max}\left(\text{var}, \ \text{epsilon}\right)}\right) + \text{const.}

参数
:::::::::
- **input** (Tensor):输入 :attr:`Tensor`,其形状为 :math:`(N, *)` 或者 :math:`(*)`,其中 :math:`*` 表示任何数量的额外维度。将被拟合成为高斯分布。数据类型为 float32 或 float64。
- **label** (Tensor):输入 :attr:`Tensor`,其形状为 :math:`(N, *)` 或者 :math:`(*)`,形状与 :attr:`input` 相同,或者维度与 input 相同但最后一维的大小为 1,如 :attr:`input` 的形状为: :math:`(N, 3)` 时, :attr:`input` 的形状可为 :math:`(N, 1)`,这时会进行 broadcast 操作。为服从高斯分布的样本。数据类型为 float32 或 float64。
- **variance** (Tensor): 输入 :attr:`Tensor`,其形状为 :math:`(N, *)` 或者 :math:`(*)`,形状与 :attr:`input` 相同,或者维度与 input 相同但最后一维的大小为 1,或者维度与 input 相比缺少最后一维,如 :attr:`input` 的形状为: :math:`(N, 3)` 时, :attr:`input` 的形状可为 :math:`(N, 1)` 或 :math:`(N)`,这时会进行 broadcast 操作。正方差样本,可为不同标签对应不同的方差(异方差性),也可以为同一个方差(同方差性)。数据类型为 float32 或 float64。
- **full** (bool,可选) - 是否在损失计算中包括常数项。默认情况下为 False,表示忽略最后的常数项。
- **epsilon** (float,可选) - 用于限制 variance 的值,使其不会导致除 0 的出现。默认值为 1e-6。
- **reduction** (str,可选) - 指定应用于输出结果的计算方式,可选值有 ``none``、``mean`` 和 ``sum``。默认为 ``mean``,计算 ``mini-batch`` loss 均值。设置为 `sum` 时,计算 `mini-batch` loss 的总和。设置为 ``none`` 时,则返回 loss Tensor。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

返回
:::::::::
`Tensor`,返回存储表示 `gaussian negative log likelihood loss` 的损失值。如果 `reduction` 为 `'none'`,则输出 Loss 形状与输入相同为 `(N, *)`。如果 `reduction` 为 `'sum'` 或者 `'mean'`,则输出 Loss 形状为 `'(1)'` 。

代码示例
:::::::::

COPY-FROM: paddle.nn.functional.gaussian_nll_loss