megengine.functional.sum#

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

计算给定维度 (或坐标轴) 元素的求和结果。

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

  • axis (Union[int, Sequence[int], None]) – 计算求和结果的维度或坐标轴。默认情况下,将对 Tensor 中的所有元素进行求和。如果参数是整数数组,求和将按照数组中整数给定的维度进行计算。

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

返回类型:

Tensor

返回:

如果对 Tensor 中的所有元素进行计算,返回没有维度的 Tensor ,否则返回有维度的 Tensor。所返回 Tensor 的数据类型将由 类型提升规则 决定。

特殊情况

假设 N 等于将要计算求和的元素数量。

  • 如果 N = 0, 求和结果是 0 ,即 (一个为空的求和结果) 。

  • 如果元素 \(x_i\)NaN ,求和结果是 NaN (即 NaN 具有传递性) 。

警告

如果求和结果超过数据类型表示范围,将会溢出。

>>> x = F.ones(128, dtype="int8")
>>> F.sum(x)
Tensor(-128, dtype=int8, device=xpux:0)

实际案例

对一个空 Tensor 进行求和,结果是自然数0。

>>> F.sum(Tensor([]))
Tensor(0.0, device=xpux:0)

普通示例:

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

沿着某一轴:

>>> F.sum(Tensor([[1, 2, 3], [4, 5, 6]]), axis=0)
Tensor([5 7 9], dtype=int32, device=xpux:0)
>>> F.sum(Tensor([[1, 2, 3], [4, 5, 6]]), axis=1)
Tensor([ 6 15], dtype=int32, device=xpux:0)