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,*)\) ,其中 \(*\) 表示任何数量的附加维度。其秩应小于8。
axis (int) - 沿此方向计算累计积。仅支持常量值。
输出:
Tensor,shape和数据类型与 x 相同。
异常:
TypeError - exclusive 或 reverse 不是bool类型。
TypeError - axis 不是int。
ValueError - axis 不是None。
- 支持平台:
Ascend
GPU
样例:
>>> 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.]]