dgl.sparse.sddmm

dgl.sparse.sddmm(A: dgl.sparse.sparse_matrix.SparseMatrix, X1: torch.Tensor, X2: torch.Tensor)dgl.sparse.sparse_matrix.SparseMatrix[source]

Sampled-Dense-Dense Matrix Multiplication (SDDMM).

sddmm matrix-multiplies two dense matrices X1 and X2, then elementwise-multiplies the result with sparse matrix A at the nonzero locations.

Mathematically sddmm is formulated as:

\[out = (X1 @ X2) * A\]

In particular, X1 and X2 can be 1-D, then X1 @ X2 becomes the out-product of the two vectors (which results in a matrix).

Parameters
  • A (SparseMatrix) – Sparse matrix of shape (L, N)

  • X1 (torch.Tensor) – Dense matrix of shape (L, M) or (L,)

  • X2 (torch.Tensor) – Dense matrix of shape (M, N) or (N,)

Returns

Sparse matrix of shape (L, N)

Return type

SparseMatrix

Examples

>>> indices = torch.tensor([[1, 1, 2], [2, 3, 3]])
>>> val = torch.arange(1, 4).float()
>>> A = dglsp.spmatrix(indices, val, (3, 4))
>>> X1 = torch.randn(3, 5)
>>> X2 = torch.randn(5, 4)
>>> dglsp.sddmm(A, X1, X2)
SparseMatrix(indices=tensor([[1, 1, 2],
                             [2, 3, 3]]),
             values=tensor([-1.6585, -3.9714, -0.5406]),
             shape=(3, 4), nnz=3)