mindspore.nn.SparseTensorDenseMatmul
- class mindspore.nn.SparseTensorDenseMatmul(adjoint_st=False, adjoint_dt=False)[源代码]
Multiplies sparse matrix a and dense matrix b. The rank of sparse matrix and dense matrix must be equal to 2.
- Parameters
- Inputs:
indices (Tensor) - A 2-D Tensor, represents the position of the element in the sparse tensor. Support int32, int64, each element value should be non-negative. The shape is \((n, 2)\).
values (Tensor) - A 1-D Tensor, represents the value corresponding to the position in the indices. Support float16, float32, float64, int32, int64. The shape should be \((n,)\).
sparse_shape (tuple) - A positive int tuple which specifies the shape of sparse tensor, should have 2 elements, represent sparse tensor shape is \((N, C)\).
dense (Tensor) - A 2-D Tensor, the dtype is same as values. If adjoint_st is False and adjoint_dt is False, the shape must be \((C, M)\). If adjoint_st is False and adjoint_dt is True, the shape must be \((M, C)\). If adjoint_st is True and adjoint_dt is False, the shape must be \((N, M)\). If adjoint_st is True and adjoint_dt is True, the shape must be \((M, N)\).
- Outputs:
Tensor, the dtype is the same as values. If adjoint_st is False, the shape is \((N, M)\). If adjoint_st is True, the shape is \((C, M)\).
- Raises
TypeError – If the type of adjoint_st or adjoint_dt is not bool, or the dtype of indices, dtype of values and dtype of dense don’t meet the parameter description.
ValueError – If sparse_shape, shape of indices, shape of values, and shape of dense don’t meet the parameter description.
- Supported Platforms:
CPU
Examples
>>> import mindspore as ms >>> from mindspore import Tensor >>> from mindspore import nn >>> indices = Tensor([[0, 1], [1, 2]], dtype=ms.int32) >>> values = Tensor([1, 2], dtype=ms.float32) >>> sparse_shape = (3, 4) >>> dense = Tensor([[1, 1], [2, 2], [3, 3], [4, 4]], dtype=ms.float32) >>> sparse_dense_matmul = nn.SparseTensorDenseMatmul() >>> out = sparse_dense_matmul(indices, values, sparse_shape, dense) >>> print(out) [[2. 2.] [6. 6.] [0. 0.]]