maxframe.tensor.prod#
- maxframe.tensor.prod(a, axis=None, dtype=None, out=None, keepdims=None)[源代码]#
返回给定轴上张量元素的乘积。
- 参数:
a (array_like) -- 输入数据。
axis (None or int or tuple of ints, optional) -- 执行乘积操作的轴或多个轴。默认值 axis=None 会计算输入张量中所有元素的乘积。如果 axis 是负数,则从最后一个轴开始向前计数。如果 axis 是一个整数元组,则对元组中指定的所有轴执行乘积操作,而不是单个轴或所有轴。
dtype (dtype, optional) -- 返回张量的类型,以及元素相乘时使用的累加器的类型。默认情况下使用 a 的 dtype,除非 a 的整数类型精度低于平台默认整数类型。在这种情况下,如果 a 是有符号类型,则使用平台整数;如果 a 是无符号类型,则使用与平台整数相同精度的无符号整数。
out (Tensor, optional) -- 用于存储结果的替代输出张量。它必须具有与期望输出相同的形状,但输出值的类型在必要时会被转换。
keepdims (bool, optional) -- 如果设置为 True,则在结果中保留被规约的轴,其大小为一。使用此选项时,结果将能够与输入数组正确广播。如果传递默认值,则 keepdims 不会被传递到 Tensor 子类的 prod 方法中;但如果传递的是非默认值,则会被传递。如果子类的 sum 方法没有实现 keepdims,则会引发异常。
- 返回:
product_along_axis -- 一个形状与 a 相同但移除了指定轴的张量。如果指定了 out,则返回对 out 的引用。
- 返回类型:
Tensor,见上文的 dtype 参数。
参见
Tensor.prod等效方法
备注
使用整数类型时,运算是模运算,溢出时不会引发错误。这意味着在 32 位平台上:
>>> import maxframe.tensor as mt
>>> x = mt.array([536870910, 536870910, 536870910, 536870910]) >>> mt.prod(x).execute() # random 16
空数组的乘积是中性元素 1:
>>> mt.prod([]).execute() 1.0
示例
默认情况下,计算所有元素的乘积:
>>> mt.prod([1.,2.]).execute() 2.0
即使输入数组是二维的:
>>> mt.prod([[1.,2.],[3.,4.]]).execute() 24.0
但我们也可以指定要进行乘积操作的轴:
>>> mt.prod([[1.,2.],[3.,4.]], axis=1).execute() array([ 2., 12.])
如果 x 的类型是无符号的,则输出类型是无符号平台整数:
>>> x = mt.array([1, 2, 3], dtype=mt.uint8) >>> mt.prod(x).dtype == mt.uint True
如果 x 是有符号整数类型,则输出类型是默认平台整数:
>>> x = mt.array([1, 2, 3], dtype=mt.int8) >>> mt.prod(x).dtype == int True