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]) 的向量。 在这种情况下,v 会在 A 的行维度上进行广播。

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

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

Parameters:
  • A (SparseMatrix) – Sparse matrix

  • v (torch.Tensor) – 向量

  • op (str) – 操作符在 [“add”, “sub”, “mul”, “truediv”] 中

Returns:

稀疏矩阵

Return type:

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