logcumsumexp

paddle. logcumsumexp ( x, axis=None, dtype=None, name=None ) [源代码]

计算 x 的指数的前缀和的对数。

假设输入是二维矩阵,j 是 axis 维的下标,i 是另一维的下标,那么运算结果将是

\[logcumsumexp(x)_{ij} = log \sum_{i=0}^{j}exp(x_{ij})\]

注解

结果的第一个元素和输入的第一个元素相同。

参数

  • x (Tensor) - 需要进行操作的 Tensor。

  • axis (int,可选) - 指明需要计算的维度。-1 代表最后一维。默认:None,将输入展开为一维变量再进行计算。

  • dtype (str,可选) - 输出 Tensor 的数据类型,支持 float32、float64。如果指定了,那么在执行操作之前,输入张量将被转换为 dtype。这对于防止数据类型溢出非常有用。默认为:None。

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

返回

  • Tensor (Tensor),x 的指数的前缀和的对数。

代码示例

import paddle

data = paddle.arange(12, dtype='float64')
data = paddle.reshape(data, (3, 4))

y = paddle.logcumsumexp(data)
# [ 0.         1.3132617  2.4076061  3.4401898  4.4519143  5.4561934
#   6.4577627  7.4583397  8.458551   9.45863   10.458658  11.458669 ]

y = paddle.logcumsumexp(data, axis=0)
# [[ 0.        1.        2.        3.      ]
#  [ 4.01815   5.01815   6.01815   7.01815 ]
#  [ 8.018479  9.018479 10.018479 11.018479]]

y = paddle.logcumsumexp(data, axis=-1)
# [[ 0.         1.3132617  2.4076061  3.4401898]
#  [ 4.         5.3132615  6.407606   7.44019  ]
#  [ 8.         9.313262  10.407606  11.440189 ]]

y = paddle.logcumsumexp(data, dtype='float64')
print(y.dtype)
# paddle.float64