折线图
- class dgl.transforms.LineGraph(backtracking=True)[source]
Bases:
BaseTransform
返回输入图的线图。
给定图 \(G\) 的线图 \(L(G)\) 是一个图,其中 \(L(G)\) 中的节点对应于 \(G\) 中的边。对于 \(G\) 中的一对 边 \((u, v)\) 和 \((v, w)\),在 \(L(G)\) 中会有一条 从对应于 \((u, v)\) 的节点到对应于 \((v, w)\) 的节点的边。
该模块仅适用于同构图。
- Parameters:
回溯 (bool, 可选) – 如果为False,将会有一条边从对应于\((u, v)\)的线图节点指向对应于\((v, u)\)的线图节点。
示例
以下示例使用PyTorch后端。
>>> import dgl >>> import torch >>> from dgl import LineGraph
案例1:回溯为真
>>> transform = LineGraph() >>> g = dgl.graph(([0, 1, 1], [1, 0, 2])) >>> g.ndata['h'] = torch.tensor([[0.], [1.], [2.]]) >>> g.edata['w'] = torch.tensor([[0.], [0.1], [0.2]]) >>> new_g = transform(g) >>> print(new_g) Graph(num_nodes=3, num_edges=3, ndata_schemes={'w': Scheme(shape=(1,), dtype=torch.float32)} edata_schemes={}) >>> print(new_g.edges()) (tensor([0, 0, 1]), tensor([1, 2, 0]))
案例2:回溯为假
>>> transform = LineGraph(backtracking=False) >>> new_g = transform(g) >>> print(new_g.edges()) (tensor([0]), tensor([2]))