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)
的向量。在这种情况下,v
在A
的列维度上进行广播。如果
A.val
的形状是(nnz, D)
,那么v
将在D
维度上进行广播。- Parameters:
A (SparseMatrix) – Sparse matrix
v (torch.Tensor) – 向量
op (str) – 操作符在 [“add”, “sub”, “mul”, “truediv”] 中
- Returns:
稀疏矩阵
- Return type:
示例
>>> 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,))