mindspore.ops.csr_add

mindspore.ops.csr_add(a: CSRTensor, b: CSRTensor, alpha: Tensor, beta: Tensor)[源代码]

\(a\)\(b\) 是CSRTensor,\(alpha\)\(beta\) 是Tensor。

\[out = alpha * a + beta * b\]

说明

用户需要确保输入的稀疏算子的合法性。否则,算子将返回错误结果。 例如,当同一个位置有多个元素时,算子可能会返回错误结果或执行失败。

参数:
  • a (CSRTensor) - 稀疏的 CSRTensor。

  • b (CSRTensor) - 稀疏的 CSRTensor。

  • alpha (Tensor) - 稠密张量,shape必须可以广播到 a

  • beta (Tensor) - 稠密张量,shape必须可以广播到 b

返回:

返回一个包含以下数据的CSRTensor。

  • indptr - 指示每行中非零值的起始点和结束点。

  • indices - 输入中所有非零值的列位置。

  • values - 稠密张量的非零值。

  • shape - csr_tensor 的形状。

支持平台:

GPU CPU

样例:

>>> import mindspore.common.dtype as mstype
>>> from mindspore import Tensor, CSRTensor
>>> import mindspore.ops as ops
>>> a_indptr = Tensor([0, 1, 2], dtype=mstype.int32)
>>> a_indices = Tensor([0, 1], dtype=mstype.int32)
>>> a_values = Tensor([1, 2], dtype=mstype.float32)
>>> shape = (2, 6)
>>> b_indptr = Tensor([0, 1, 2], dtype=mstype.int32)
>>> b_indices = Tensor([0, 1], dtype=mstype.int32)
>>> b_values = Tensor([1, 2], dtype=mstype.float32)
>>> alpha = Tensor(1, mstype.float32)
>>> beta = Tensor(1, mstype.float32)
>>> csra = CSRTensor(a_indptr, a_indices, a_values, shape)
>>> csrb = CSRTensor(b_indptr, b_indices, b_values, shape)
>>> out = ops.csr_add(csra, csrb, alpha, beta)
>>> print(out)
CSRTensor(shape=[2, 6], dtype=Float32,                   indptr=Tensor(shape=[3], dtype=Int32, value=[0 1 2]),                   indices=Tensor(shape=[2], dtype=Int32, value=[0 1]),                   values=Tensor(shape=[2], dtype=Float32, value=[ 2.00000000e+00  4.00000000e+00]))