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_st 为False, adjoint_dt 为False,则shape必须为 \((C, M)\) 。
如果 adjoint_st 为False, adjoint_dt 为True,则shape必须为 \((M, C)\) 。
如果 adjoint_st 为True, adjoint_dt 为False,则shape必须为 \((N, M)\) 。
如果 adjoint_st 为True, adjoint_dt 为True,则shape必须为 \((M, N)\) 。
- 输出:
Tensor,数据类型与 values 相同。 如果 adjoint_st 为False,则shape为 \((N, M)\) 。 如果 adjoint_st 为True,则shape为 \((C, M)\) 。
- 异常:
TypeError - 如果 adjoint_st 或 adjoint_dt 的数据类型不是bool,或者 indices 、 values 、 dense 的数据类型不符合参数中所描述支持的数据类型。
ValueError - 如果 sparse_shape 、 indices 、 values 和 dense 的shape不符合参数中所描述支持的数据类型。
- 支持平台:
GPU
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor >>> from mindspore.ops import operations as ops >>> from mindspore.common 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.]]