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
维度上进行广播。- 参数:
A (SparseMatrix) – 稀疏矩阵
v (torch.Tensor) – 向量
op (str) – 算子,取值范围为 ["add", "sub", "mul", "truediv"]
- 返回:
稀疏矩阵
- 返回类型:
示例
>>> 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,))