dgl.sparse.sp_broadcast_v

dgl.sparse.sp_broadcast_v(A: SparseMatrix, v: Tensor, op: str) SparseMatrix[source]

稀疏矩阵和向量的广播算子。

v 被广播到 A 的形状,然后将算子应用于 A 的非零值上。

关于 v 的形状,有两种情况:

1. v 是形状为 (1, A.shape[1])(A.shape[1]) 的向量。在这种情况下,vA 的行维度上进行广播。

2. v 是形状为 (A.shape[0], 1) 的向量。在这种情况下,vA 的列维度上进行广播。

如果 A.val 的形状是 (nnz, D),则 v 将在 D 维度上进行广播。

参数:
  • A (SparseMatrix) – 稀疏矩阵

  • v (torch.Tensor) – 向量

  • op (str) – 算子,取值范围为 ["add", "sub", "mul", "truediv"]

返回:

稀疏矩阵

返回类型:

SparseMatrix

示例

>>> indices = torch.tensor([[1, 0, 2], [0, 3, 2]])
>>> val = torch.tensor([10, 20, 30])
>>> A = dglsp.spmatrix(indices, val, shape=(3, 4))
>>> v = torch.tensor([1, 2, 3, 4])
>>> dglsp.sp_broadcast_v(A, v, "add")
SparseMatrix(indices=tensor([[1, 0, 2],
                             [0, 3, 2]]),
             values=tensor([11, 24, 33]),
             shape=(3, 4), nnz=3)
>>> v = torch.tensor([1, 2, 3]).view(-1, 1)
>>> dglsp.sp_broadcast_v(A, v, "add")
SparseMatrix(indices=tensor([[1, 0, 2],
                             [0, 3, 2]]),
             values=tensor([12, 21, 33]),
             shape=(3, 4), nnz=3)
>>> indices = torch.tensor([[1, 0, 2], [0, 3, 2]])
>>> val = torch.tensor([[10, 20], [30, 40], [50, 60]])
>>> A = dglsp.spmatrix(indices, val, shape=(3, 4))
>>> v = torch.tensor([1, 2, 3]).view(-1, 1)
>>> dglsp.sp_broadcast_v(A, v, "sub")
SparseMatrix(indices=tensor([[1, 0, 2],
                             [0, 3, 2]]),
             values=tensor([[ 8, 18],
                            [29, 39],
                            [47, 57]]),
             shape=(3, 4), nnz=3, val_size=(2,))