dgl.lap_peΒΆ
-
dgl.
lap_pe
(g, k, padding=False, return_eigval=False)[source]ΒΆ Laplacian Positional Encoding, as introduced in Benchmarking Graph Neural Networks
This function computes the laplacian positional encodings as the k smallest non-trivial eigenvectors.
- Parameters
g (DGLGraph) β The input graph. Must be homogeneous and bidirected.
k (int) β Number of smallest non-trivial eigenvectors to use for positional encoding.
padding (bool, optional) β If False, raise an exception when k>=n. Otherwise, add zero paddings in the end of eigenvectors and βnanβ paddings in the end of eigenvalues when k>=n. Default: False. n is the number of nodes in the given graph.
return_eigval (bool, optional) β If True, return laplacian eigenvalues together with eigenvectors. Otherwise, return laplacian eigenvectors only. Default: False.
- Returns
Return the laplacian positional encodings of shape \((N, k)\), where \(N\) is the number of nodes in the input graph, when
return_eigval
is False. The eigenvalues of shape \(N\) is additionally returned as the second element whenreturn_eigval
is True.- Return type
Tensor or (Tensor, Tensor)
Example
>>> 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]))