dgl.sparse.SparseMatrix.smean

SparseMatrix.smean(dim: int | None = None)

计算输入稀疏矩阵 input 在给定维度 dim 上的非零值的均值。

归约(reduction)不计算零值。如果要归约的行或列没有任何非零值,结果将为 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.shape[1:] 的张量。

返回值:

归约后的张量

返回值类型:

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.smean(A)
tensor(1.3333)
>>> dglsp.smean(A, 0)
tensor([1., 0., 2.])
>>> dglsp.smean(A, 1)
tensor([1.0000, 1.5000, 0.0000, 0.0000])

情况 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.smean(A)
tensor([1.6667, 1.6667])
>>> dglsp.smean(A, 0)
tensor([[1.5000, 1.5000],
        [0.0000, 0.0000],
        [2.0000, 2.0000]])
>>> dglsp.smean(A, 1)
tensor([[1.0000, 2.0000],
        [2.0000, 1.5000],
        [0.0000, 0.0000],
        [0.0000, 0.0000]])