megengine.functional.prod#

prod(inp, axis=None, keepdims=False)[源代码]#

计算张量元素在给定轴上的乘积。

参数:
  • inp (Tensor) – 输入张量。 应该有一个数字数据类型。

  • axis (Union[int, Sequence[int], None]) – 用于确定计算哪些元素乘积的轴。默认情况下,乘积必须在整个张量上计算。如果是一个整数序列,则必须在多个轴上计算乘积。

  • keepdims – 若为 “True”,则指定用来reduce的轴(维度)必须包含在结果中,因此,结果必须与输入tensor兼容(参见:ref:`broadcasting-rule `)。否则,若为 “False”,结果中不得包含用于reduce的轴(维度)。

返回类型:

Tensor

返回:

如累积乘是在整个张量上计算的,则是一个零维张量;否则,是一个非零维张量。返回的张量的类型由:ref:`dtype-promotion`决定。

特殊情况

N 等于计算乘积的元素数量。

  • 如果 “N” 为0,则积为 “1”(即空积)。

  • 如果 \(x_i\)NaN,则累积乘的结果为 `NaN`(即,`NaN`值传播)。

警告

使用整数类型时算术是模块化的,溢出时不会引发错误:

>>> x = Tensor([536870910, 536870910, 536870910, 536870910])
>>> F.prod(x)
Tensor(16, dtype=int32, device=xpux:0)

实际案例

空张量的累积乘结果是元素1。

>>> F.prod(Tensor([]))
Tensor(1.0, device=xpux:0)

普通示例:

>>> F.prod(Tensor([1, 2, 3]))
Tensor(6, dtype=int32, device=xpux:0)
>>> F.prod(Tensor([0.5, 1.5]))
Tensor(0.75, device=xpux:0)

沿着某一轴:

>>> F.prod(Tensor([[1, 2, 3], [4, 5, 6]]), axis=0)
Tensor([ 4 10 18], dtype=int32, device=xpux:0)
>>> F.prod(Tensor([[1, 2, 3], [4, 5, 6]]), axis=1)
Tensor([  6 120], dtype=int32, device=xpux:0)