dgl.sparse.SparseMatrix.reduce
- SparseMatrix.reduce(dim: int | None = None, rtype: str = 'sum')
计算
input
稀疏矩阵沿给定维度dim
的非零值的归约。归约不计算零元素。如果待归约的行或列不包含任何非零元素,则结果为 0。
- 参数:
input (SparseMatrix) – 输入稀疏矩阵
dim (int, 可选) –
要归约的维度,必须是 0(按行)、1(按列)或 None(同时按行和列)
如果
dim
为 None,则归约稀疏矩阵的行和列,生成形状为input.val.shape[1:]
的张量。否则,按行 (dim=0
) 或列 (dim=1
) 维度归约,生成形状为(input.shape[1],) + input.val.shape[1:]
或(input.shape[0],) + input.val.shape[1:]
的张量。rtype (str, 可选) – 归约类型,为
['sum', 'smin', 'smax', 'smean', 'sprod']
之一,分别表示对非零元素求和、求最小值、求最大值、求平均值和求乘积
- 返回:
归约后的张量
- 返回类型:
torch.Tensor
示例
情况1:标量值稀疏矩阵
>>> indices = torch.tensor([[0, 1, 1], [0, 0, 2]]) >>> val = torch.tensor([1, 1, 2]) >>> A = dglsp.spmatrix(indices, val, shape=(4, 3)) >>> dglsp.reduce(A, rtype='sum') tensor(4) >>> dglsp.reduce(A, 0, 'sum') tensor([2, 0, 2]) >>> dglsp.reduce(A, 1, 'sum') tensor([1, 3, 0, 0]) >>> dglsp.reduce(A, 0, 'smax') tensor([1, 0, 2]) >>> dglsp.reduce(A, 1, 'smin') tensor([1, 1, 0, 0])
情况2:向量值稀疏矩阵
>>> indices = torch.tensor([[0, 1, 1], [0, 0, 2]]) >>> val = torch.tensor([[1., 2.], [2., 1.], [2., 2.]]) >>> A = dglsp.spmatrix(indices, val, shape=(4, 3)) >>> dglsp.reduce(A, rtype='sum') tensor([5., 5.]) >>> dglsp.reduce(A, 0, 'sum') tensor([[3., 3.], [0., 0.], [2., 2.]]) >>> dglsp.reduce(A, 1, 'smin') tensor([[1., 2.], [2., 1.], [0., 0.], [0., 0.]]) >>> dglsp.reduce(A, 0, 'smean') tensor([[1.5000, 1.5000], [0.0000, 0.0000], [2.0000, 2.0000]])