dgl.sparse.sddmm

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

采样-稠密-稠密矩阵乘法 (SDDMM)。

sddmm 将两个稠密矩阵 X1X2 进行矩阵乘法,然后将结果与稀疏矩阵 A 在非零位置进行逐元素乘法。

数学上,sddmm 的公式为

out=(X1@X2)A

特别地,X1X2 可以是 1-D 向量,此时 X1 @ X2 变为这两个向量的外积(结果是一个矩阵)。

参数:
  • A (SparseMatrix) – 形状为 (L, N) 的稀疏矩阵

  • X1 (torch.Tensor) – 形状为 (L, M)(L,) 的稠密矩阵

  • X2 (torch.Tensor) – 形状为 (M, N)(N,) 的稠密矩阵

返回值:

形状为 (L, N) 的稀疏矩阵

返回类型:

SparseMatrix

示例

>>> 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)