LineGraph
- class dgl.transforms.LineGraph(backtracking=True)[source]
基类:
BaseTransform
返回输入图的线图。
给定图 \(G\) 的线图 \(L(G)\) 是一个图,其中 \(L(G)\) 中的节点对应于 \(G\) 中的边。对于 \(G\) 中的一对边 \((u, v)\) 和 \((v, w)\),在 \(L(G)\) 中将存在一条从对应于 \((u, v)\) 的节点到对应于 \((v, w)\) 的节点的边。
此模块仅适用于同构图。
- 参数:
backtracking (bool, optional) – 如果为 False,则在线图节点中,对应于边 \((u, v)\) 的节点到对应于边 \((v, u)\) 的节点之间将存在一条边。
示例
以下示例使用 PyTorch 后端。
>>> import dgl >>> import torch >>> from dgl import LineGraph
情况 1:Backtracking 为 True
>>> 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:Backtracking 为 False
>>> transform = LineGraph(backtracking=False) >>> new_g = transform(g) >>> print(new_g.edges()) (tensor([0]), tensor([2]))