dgl.sparse.matmul
- dgl.sparse.matmul(A: Tensor | SparseMatrix, B: Tensor | SparseMatrix) Tensor | SparseMatrix[source]
将两个密集/稀疏矩阵相乘,等同于
A @ B。此函数不支持
A是torch.Tensor且B是SparseMatrix的情况。如果两个矩阵都是 torch.Tensor,它会调用
torch.matmul()。结果是一个密集矩阵。如果两个矩阵都是稀疏的,它会调用
dgl.sparse.spspmm()。结果是稀疏矩阵。如果
A是稀疏的,而B是密集的,它会调用dgl.sparse.spmm()。结果是一个密集矩阵。该操作符支持批量稀疏-密集矩阵乘法。在这种情况下,稀疏矩阵
A应具有形状(L, M),其中非零值具有批量维度K。密集矩阵B应具有形状(M, N, K)。输出是一个形状为(L, N, K)的密集矩阵。稀疏-稀疏矩阵乘法不支持批量计算。
- Parameters:
A (torch.Tensor 或 SparseMatrix) – 第一个矩阵。
B (torch.Tensor 或 SparseMatrix) – 第二个矩阵。
- Returns:
结果矩阵
- Return type:
torch.Tensor 或 SparseMatrix
示例
将对角矩阵与密集矩阵相乘。
>>> val = torch.randn(3) >>> A = dglsp.diag(val) >>> B = torch.randn(3, 2) >>> result = dglsp.matmul(A, B) >>> type(result) <class 'torch.Tensor'> >>> result.shape torch.Size([3, 2])
将一个稀疏矩阵与一个密集矩阵相乘。
>>> indices = torch.tensor([[0, 1, 1], [1, 0, 1]]) >>> val = torch.randn(indices.shape[1]) >>> A = dglsp.spmatrix(indices, val) >>> X = torch.randn(2, 3) >>> result = dglsp.matmul(A, X) >>> type(result) <class 'torch.Tensor'> >>> result.shape torch.Size([2, 3])
将一个稀疏矩阵与另一个稀疏矩阵相乘。
>>> indices1 = torch.tensor([[0, 1, 1], [1, 0, 1]]) >>> val1 = torch.ones(indices1.shape[1]) >>> A = dglsp.spmatrix(indices1, val1) >>> indices2 = torch.tensor([[0, 1, 1], [0, 2, 1]]) >>> val2 = torch.ones(indices2.shape[1]) >>> B = dglsp.spmatrix(indices2, val2) >>> result = dglsp.matmul(A, B) >>> type(result) <class 'dgl.sparse.sparse_matrix.SparseMatrix'> >>> result.shape (2, 3)