logcumsumexp¶
计算 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