AddReverse
- class dgl.transforms.AddReverse(copy_edata=False, sym_new_etype=False)[source]
Bases:
BaseTransform
对于输入图中的每条边 \((j,i)\),添加一条反向边 \((i,j)\) 并返回一个新图。
对于异构图,它为每种边类型添加一个“反向”边类型来存放反向边。例如,对于规范边类型 (‘A’, ‘r’, ‘B’),它会添加规范边类型 (‘B’, ‘rev_r’, ‘A’)。
- 参数:
示例
以下示例使用 PyTorch 后端。
>>> import dgl >>> import torch >>> from dgl import AddReverse
情况1:为同构图添加反向边
>>> transform = AddReverse() >>> g = dgl.graph(([0], [1])) >>> g.edata['w'] = torch.ones(1, 2) >>> new_g = transform(g) >>> print(new_g.edges()) (tensor([0, 1]), tensor([1, 0])) >>> print(new_g.edata['w']) tensor([[1., 1.], [0., 0.]])
情况2:为同构图添加反向边并复制边数据
>>> transform = AddReverse(copy_edata=True) >>> new_g = transform(g) >>> print(new_g.edata['w']) tensor([[1., 1.], [1., 1.]])
情况3:为异构图添加反向边
>>> g = dgl.heterograph({ ... ('user', 'plays', 'game'): ([0, 1], [1, 1]), ... ('user', 'follows', 'user'): ([1, 2], [2, 2]) ... }) >>> new_g = transform(g) >>> print(new_g.canonical_etypes) [('game', 'rev_plays', 'user'), ('user', 'follows', 'user'), ('user', 'plays', 'game')] >>> print(new_g.edges(etype='rev_plays')) (tensor([1, 1]), tensor([0, 1])) >>> print(new_g.edges(etype='follows')) (tensor([1, 2, 2, 2]), tensor([2, 2, 1, 2]))