dgl.lap_pe

dgl.lap_pe(g, k, padding=False, return_eigval=False)[源码]

拉普拉斯位置编码,如论文 Benchmarking Graph Neural Networks 中所述

此函数计算拉普拉斯位置编码,即 k 个最小的非平凡特征向量。

参数:
  • g (DGLGraph) – 输入图。必须是同构且双向的。

  • k (int) – 用于位置编码的最小非平凡特征向量的数量。

  • padding (bool, optional) – 如果为 False,当 k>=n 时引发异常。否则,当 k>=n 时在特征向量末尾添加零填充,在特征值末尾添加 ‘nan’ 填充。默认值:False。n 是给定图中的节点数。

  • return_eigval (bool, optional) – 如果为 True,返回拉普拉斯特征值以及特征向量。否则,只返回拉普拉斯特征向量。默认值:False。

返回:

return_eigval 为 False 时,返回形状为 \((N, k)\) 的拉普拉斯位置编码,其中 \(N\) 是输入图中的节点数。当 return_eigval 为 True 时,额外返回形状为 \(N\) 的特征值作为第二个元素。

返回类型:

Tensor 或 (Tensor, Tensor)

示例

>>> import dgl
>>> g = dgl.graph(([0,1,2,3,1,2,3,0], [1,2,3,0,0,1,2,3]))
>>> dgl.lap_pe(g, 2)
tensor([[ 7.0711e-01, -6.4921e-17],
        [ 3.0483e-16, -7.0711e-01],
        [-7.0711e-01, -2.4910e-16],
        [ 9.9288e-17,  7.0711e-01]])
>>> dgl.lap_pe(g, 5, padding=True)
tensor([[ 7.0711e-01, -6.4921e-17,  5.0000e-01,  0.0000e+00,  0.0000e+00],
        [ 3.0483e-16, -7.0711e-01, -5.0000e-01,  0.0000e+00,  0.0000e+00],
        [-7.0711e-01, -2.4910e-16,  5.0000e-01,  0.0000e+00,  0.0000e+00],
        [ 9.9288e-17,  7.0711e-01, -5.0000e-01,  0.0000e+00,  0.0000e+00]])
>>> dgl.lap_pe(g, 5, padding=True, return_eigval=True)
(tensor([[-7.0711e-01,  6.4921e-17, -5.0000e-01,  0.0000e+00,  0.0000e+00],
         [-3.0483e-16,  7.0711e-01,  5.0000e-01,  0.0000e+00,  0.0000e+00],
         [ 7.0711e-01,  2.4910e-16, -5.0000e-01,  0.0000e+00,  0.0000e+00],
         [-9.9288e-17, -7.0711e-01,  5.0000e-01,  0.0000e+00,  0.0000e+00]]),
 tensor([1., 1., 2., nan, nan]))