dgl.lap_pe

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

拉普拉斯位置编码,如图神经网络基准测试中介绍

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

Parameters:
  • g (DGLGraph) – 输入图。必须是同质且双向的。

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

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

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

Returns:

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

Return type:

张量或(张量,张量)

示例

>>> 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]))