logsumexp
沿着参数 axis 计算 x 的以 e 为底的指数的和的自然对数。计算公式如下:
\[logsumexp(x) = \log\sum exp(x)\]
备注
别名支持: 参数名 input 可替代 x, dim 可替代 axis。
参数
x (Tensor) - 输入的 Tensor,数据类型为:float16,float32、float64,维度不超过 4 。 别名:
inputaxis (int|list|tuple,可选) - 指定对
x进行计算的轴。axis可以是 int、list(int)、tuple(int)。如果axis包含多个维度,则沿着axis中的所有轴进行计算。axis或者其中的元素值应该在范围[-D, D)内,D 是x的维度。如果axis或者其中的元素值小于 0,则等价于 \(axis + D\)。如果axis是 None,则对x的全部元素计算 logsumexp。默认值为 None。 别名:dimkeepdim (bool,可选) - 是否在输出 Tensor 中保留减小的维度。如果
keepdim为 True,则输出 Tensor 和x具有相同的维度(减少的维度除外,减少的维度的大小为 1)。否则,输出 Tensor 的形状会在axis上进行 squeeze 操作。默认值为 False。name (str,可选) - 具体用法请参见 api_guide_Name,一般无需设置,默认值为 None。
out (Tensor,可选) - 指定输出结果的 Tensor,默认值为 None。
返回
Tensor,沿着axis进行 logsumexp 计算的结果,数据类型和x相同。
代码示例
>>> import paddle
>>> x = paddle.to_tensor([[-1.5, 0., 2.], [3., 1.2, -2.4]])
>>> out1 = paddle.logsumexp(x)
>>> out1
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
3.46912265)
>>> out2 = paddle.logsumexp(x, 1)
>>> out2
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[2.15317822, 3.15684605])