mindspore.ops.CumProd

查看源文件
class mindspore.ops.CumProd(exclusive=False, reverse=False)[源代码]

计算 x 沿着指定axis的元素累计积。

例如,如果输入是长度为N的vector,则输出也是长度为N的vector。其中的每一个元素为

\[y_i = x_1 * x_2 * x_3 * ... * x_i\]
参数:
  • exclusive (bool) - 如果为 True ,则排除末尾元素计算元素累计积(见样例)。默认值: False

  • reverse (bool) - 如果为 True ,则沿 axis 反转结果。默认值: False

输入:
  • x (Tensor[Number]) - 输入Tensor。shape为 \((N, *)\) ,其中 \(*\) 为任意数量的额外维度。

  • axis (int) - 沿此方向计算累计积。仅支持常量值。

输出:

Tensor,shape和数据类型与 x 相同。

异常:
  • TypeError - exclusivereverse 不是bool类型。

  • TypeError - axis 不是int。

  • ValueError - axis 是None。

支持平台:

Ascend GPU CPU

样例:

>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> a, b, c, = 1, 2, 3
>>> x = Tensor(np.array([a, b, c]).astype(np.float32))
>>> op0 = ops.CumProd()
>>> output0 = op0(x, 0) # output=[a, a * b, a * b * c]
>>> op1 = ops.CumProd(exclusive=True)
>>> output1 = op1(x, 0) # output=[1, a, a * b]
>>> op2 = ops.CumProd(reverse=True)
>>> output2 = op2(x, 0) # output=[a * b * c, b * c, c]
>>> op3 = ops.CumProd(exclusive=True, reverse=True)
>>> output3 = op3(x, 0) # output=[b * c, c, 1]
>>> print(output0)
[1. 2. 6.]
>>> print(output1)
[1. 1. 2.]
>>> print(output2)
[6. 6. 3.]
>>> print(output3)
[6. 3. 1.]
>>> x = Tensor(np.array([[1, 2, 3], [4, 5, 6], [5, 3, 5]]).astype(np.float32))
>>> output4 = op0(x, 0)
>>> output5 = op0(x, 1)
>>> print(output4)
[[ 1.  2.  3.]
 [ 4. 10. 18.]
 [20. 30. 90.]]
>>> print(output5)
[[  1.   2.   6.]
 [  4.  20. 120.]
 [  5.  15.  75.]]