LapPE

dgl.transforms.LapPE(k, feat_name='PE', eigval_name=None, padding=False)[source]

基类: BaseTransform

拉普拉斯位置编码,如 Benchmarking Graph Neural Networks 中介绍的

此模块仅适用于同构双向图。

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

  • feat_name (str, 可选) – 在 ndata 中存储计算出的位置编码的名称。

  • eigval_name (str, 可选) – 如果为 None,则仅存储拉普拉斯特征向量。否则,这是在 ndata 中存储相应拉普拉斯特征值的名称。默认值: None。

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

示例

>>> import dgl
>>> from dgl import LapPE
>>> transform1 = LapPE(k=3)
>>> transform2 = LapPE(k=5, padding=True)
>>> transform3 = LapPE(k=5, feat_name='eigvec', eigval_name='eigval', padding=True)
>>> g = dgl.graph(([0,1,2,3,4,2,3,1,4,0], [2,3,1,4,0,0,1,2,3,4]))
>>> g1 = transform1(g)
>>> print(g1.ndata['PE'])
tensor([[ 0.6325,  0.1039,  0.3489],
        [-0.5117,  0.2826,  0.6095],
        [ 0.1954,  0.6254, -0.5923],
        [-0.5117, -0.4508, -0.3938],
        [ 0.1954, -0.5612,  0.0278]])
>>> g2 = transform2(g)
>>> print(g2.ndata['PE'])
tensor([[-0.6325, -0.1039,  0.3489, -0.2530,  0.0000],
        [ 0.5117, -0.2826,  0.6095,  0.4731,  0.0000],
        [-0.1954, -0.6254, -0.5923, -0.1361,  0.0000],
        [ 0.5117,  0.4508, -0.3938, -0.6295,  0.0000],
        [-0.1954,  0.5612,  0.0278,  0.5454,  0.0000]])
>>> g3 = transform3(g)
>>> print(g3.ndata['eigval'])
tensor([[0.6910, 0.6910, 1.8090, 1.8090,    nan],
        [0.6910, 0.6910, 1.8090, 1.8090,    nan],
        [0.6910, 0.6910, 1.8090, 1.8090,    nan],
        [0.6910, 0.6910, 1.8090, 1.8090,    nan],
        [0.6910, 0.6910, 1.8090, 1.8090,    nan]])
>>> print(g3.ndata['eigvec'])
tensor([[ 0.6325, -0.1039,  0.3489,  0.2530,  0.0000],
        [-0.5117, -0.2826,  0.6095, -0.4731,  0.0000],
        [ 0.1954, -0.6254, -0.5923,  0.1361,  0.0000],
        [-0.5117,  0.4508, -0.3938,  0.6295,  0.0000],
        [ 0.1954,  0.5612,  0.0278, -0.5454,  0.0000]])