PoissonNLLLoss¶
- class paddle.nn. PoissonNLLLoss ( log_input=True, full=False, epsilon=1e-8, reduction='mean', name=None ) [源代码] ¶
该接口可创建一个 PoissonNLLLoss 可调用类,计算输入 input
和标签 label
间的 Poisson negative log likelihood loss 损失。该 loss 适用于真实标签服从于泊松分布时,即
该损失函数的数学计算公式如下: 当 log_input 设置为 True 时,损失函数的数学计算公式为:
其中 epsilon 是 True
时使用的常数小量,使得 loss 计算过程中不会导致对 0 求对数情况的出现。 当 log_input 设置为 False 时,损失函数的数学计算公式为:
损失函数中的最后一项可以使用 Stirling 公式近似,该近似项的计算公式为
将 label 和每个元素都为 1 的同样形状的张量比较,对 label 值超过 1 的索引处考虑此项近似,对 label 的值小于等于 1 的索引处设置此项近似为 0 进行遮盖。
参数¶
log_input (bool,可选) - 输入是否为对数函数映射后结果,默认值为
True
。full (bool,可选) - 是否在损失计算中包括 Stirling 近似项。默认值为
False
。epsilon (float,可选) - 在
log_input
为True
时使用的常数小量。默认值为 1e-8。reduction (str,可选) - 指定应用于输出结果的计算方式,可选值有
none
、mean
和sum
。默认为mean
,计算mini-batch
loss 均值。设置为sum
时,计算mini-batch
loss 的总和。设置为none
时,则返回 loss Tensor。默认值下为mean
。name (str,可选) - 具体用法请参见 Name ,一般无需设置,默认值为 None。
形状¶
input (Tensor) - 输入 Tensor,其形状为 \([N, *]\) ,其中 \(*\) 表示任何数量的额外维度。数据类型为 float16, bfloat16, float32 或 float64。
label (Tensor) - 标签
Tensor
, 形状、数据类型和input
相同。
返回¶
output (Tensor) - 输入 input 和 label 间的 Poisson negative log likelihood loss 损失。如果 reduction 为 'none',则输出 Loss 形状为 [N, *]。如果 reduction 为 'sum' 或者 'mean',则输出 Loss 形状为 '[]' 。
代码示例¶
>>> import paddle
>>> paddle.seed(2023)
>>> poisson_nll_loss = paddle.nn.loss.PoissonNLLLoss()
>>> input = paddle.randn([5, 2], dtype=paddle.float32)
>>> label = paddle.randn([5, 2], dtype=paddle.float32)
>>> loss = poisson_nll_loss(input, label)
>>> print(loss)
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
1.52983975)