sum

paddle.sparse.sum(x, axis=None, dtype=None, keepdim=False, name=None):

计算给定维度 axis 上稀疏张量 x 元素的和。 输入 x 必须为稀疏压缩格式( SparseCooTensorSparseCsrTensor)。

等式为:

\[out = sum(x, axis, dtype, keepdim)\]

参数

  • x (Tensor) - 输入的 Tensor,数据类型为 bool、float16、float32、float64、int32 或 int64。

  • axis (int|list|tuple,可选) - 沿着哪些维度进行求和操作。如果为 None,则对 x 的所有元素进行求和并返回一个只有一个元素的 Tensor;否则必须在 \([-rank(x), rank(x))\) 范围内。如果 \(axis[i] < 0\),则要减少的维度是 \(rank + axis[i]\)

  • dtype (str,可选) - 输出 Tensor 的数据类型。默认值为 None,表示与输入 Tensor x 数据类型一致。

  • keepdim (bool,可选) - 是否在输出 Tensor 中保留减少的维度。如果为 True,则结果 Tensor 的维数比 x 少一维,否则与 x 维数一致。默认值为 False。

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

Tensor,在指定维度上进行求和运算的 Tensor。如果 x.dtype='bool'x.dtype='int32',则其数据类型为 'int64',否则数据类型与 x 一致。

代码示例

>>> import paddle

>>> dense_x = paddle.to_tensor([[-2., 0.], [1., 2.]])
>>> sparse_x = dense_x.to_sparse_coo(1)
>>> out1 = paddle.sparse.sum(sparse_x)
>>> out1
Tensor(shape=[1], dtype=paddle.float32, place=Place(cpu), stop_gradient=True,
    indices=[0],
    values=1.)
>>> out2 = paddle.sparse.sum(sparse_x, axis=0)
>>> out2
Tensor(shape=[1, 2], dtype=paddle.float32, place=Place(cpu), stop_gradient=True,
    indices=[[0]],
    values=[[-1.,  2.]])
>>> out3 = paddle.sparse.sum(sparse_x, axis=-1)
>>> out3
Tensor(shape=[2], dtype=paddle.float32, place=Place(cpu), stop_gradient=True,
    indices=[[0, 1]],
    values=[-2.,  3.])
>>> out4 = paddle.sparse.sum(sparse_x, axis=1, keepdim=True)
>>> out4
Tensor(shape=[2, 1], dtype=paddle.float32, place=Place(cpu), stop_gradient=True,
    indices=[[0, 1]],
    values=[[-2.],
            [ 3.]])