poisson_nll_loss

paddle.nn.functional. poisson_nll_loss ( input, label, log_input=True, full=False, epsilon=1e-8, reduction='mean', name=None ) [源代码]

返回 poisson negative log likelihood。可在 PoissonNLLLoss 查看详情。

参数

  • input (Tensor) - 输入 Tensor,对应泊松分布的期望,其形状为 \([N, *]\),其中 \(*\) 表示任何数量的额外维度。数据类型为 float16,bfloat16,float32 或 float64。

  • label (Tensor) - 标签 Tensor, 形状、数据类型和 input 相同。

  • log_input (bool,可选) - 输入是否为对数函数映射后结果,如果为 True,则 loss 当中第一项的计算公式为

\[\text{input} - \text{label} * \log(\text{input}+\text{eps})\]

其中 eps 为数值稳定使用的常数小量。 如果为 False,则 loss 的计算公式为

\[\exp(\text{input}) - \text{label} * \text{input}\]

默认值为 True

  • full (bool,可选) - 是否在损失计算中包括 Stirling 近似项。该近似项的计算公式为

\[\text{label} * \log(\text{label}) - \text{label} + 0.5 * \log(2 * \pi * \text{label})\]

默认值为 False

  • eps (float,可选) - 在 log_inputTrue 时使用的常数小量,使得 loss 计算过程中不会导致对 0 求对数情况的出现。默认值为 1e-8。

  • reduction (str,可选) - 指定应用于输出结果的计算方式,可选值有 nonemeansum。默认为 mean,计算 mini-batch loss 均值。设置为 sum 时,计算 mini-batch loss 的总和。设置为 none 时,则返回 loss Tensor。默认值下为 mean

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

Tensor,返回存储表示 poisson negative log likelihood loss 的损失值。

代码示例

>>> import paddle
>>> import paddle.nn.functional as F
>>> paddle.seed(2023)

>>> input = paddle.randn([5, 2], dtype=paddle.float32)
>>> label = paddle.randn([5, 2], dtype=paddle.float32)
>>> loss = F.poisson_nll_loss(input, label, log_input=True, reduction='none')
>>> print(loss)
Tensor(shape=[5, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
       [[ 1.09998012,  3.68829036],
        [ 1.95291090,  0.69603068],
        [-0.39289063, -2.03713036],
        [ 4.52518702,  1.28625548],
        [ 3.94454789,  0.53521496]])
>>> loss = F.poisson_nll_loss(input, label, reduction='mean')
>>> print(loss)
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
       1.52983975)