mindspore.ops.SparseTensorDenseMatmul

class mindspore.ops.SparseTensorDenseMatmul(adjoint_st=False, adjoint_dt=False)[源代码]

稀疏矩阵 A 乘以稠密矩阵 B 。稀疏矩阵和稠密矩阵的秩必须等于2。

参数:
  • adjoint_st (bool) - 如果为 True ,则在乘法之前转置稀疏矩阵 A 。默认值: False

  • adjoint_dt (bool) - 如果为 True ,则在乘法之前转置稠密矩阵 B 。默认值: False

输入:
  • indices (Tensor) - 二维Tensor,表示元素在稀疏Tensor中的位置。支持int32、int64,每个元素值都应该是非负的。shape是 \((n, 2)\)

  • values (Tensor) - 一维Tensor,表示 indices 位置上对应的值。支持float16、float32、float64、int32、int64、complex64、complex128。shape是 \((n,)\)

  • sparse_shape (tuple(int) 或 Tensor) - 指定稀疏Tensor的shape,由两个正整数组成,表示稀疏Tensor的shape为 \((N, C)\)

  • dense (Tensor) - 二维Tensor,数据类型与 values 相同。

    • 如果 adjoint_stFalseadjoint_dtFalse ,则shape必须为 \((C, M)\)

    • 如果 adjoint_stFalseadjoint_dtTrue ,则shape必须为 \((M, C)\)

    • 如果 adjoint_stTrueadjoint_dtFalse ,则shape必须为 \((N, M)\)

    • 如果 adjoint_stTrueadjoint_dtTrue ,则shape必须为 \((M, N)\)

输出:

Tensor,数据类型与 values 相同。 如果 adjoint_stFalse ,则shape为 \((N, M)\) 。 如果 adjoint_stTrue ,则shape为 \((C, M)\)

异常:
  • TypeError - 如果 adjoint_stadjoint_dt 的数据类型不是bool,或者 indicesvaluesdense 的数据类型不符合参数中所描述支持的数据类型。

  • ValueError - 如果 sparse_shapeindicesvaluesdense 的shape不符合参数中所描述支持的数据类型。

支持平台:

GPU CPU

样例:

>>> import mindspore
>>> from mindspore import Tensor
>>> from mindspore.ops import operations as ops
>>> from mindspore import dtype as mstype
>>> indices = Tensor([[0, 1], [1, 2]], dtype=mindspore.int32)
>>> values = Tensor([1, 2], dtype=mindspore.float32)
>>> sparse_shape = (3, 4)
>>> dense = Tensor([[1, 1], [2, 2], [3, 3], [4, 4]], dtype=mindspore.float32)
>>> sparse_dense_matmul = ops.SparseTensorDenseMatmul()
>>> out = sparse_dense_matmul(indices, values, sparse_shape, dense)
>>> print(out)
[[2. 2.]
 [6. 6.]
 [0. 0.]]