dgl.graphbolt.add_reverse_edges

dgl.graphbolt.add_reverse_edges(edges: Dict[str, Tensor] | Tensor, reverse_etypes_mapping: Dict[str, str] | None = None)[source]

此函数查找给定 edges 的反向边并返回它们的组合。在同构图中,反向边具有反转的源节点和目标节点 ID。而在异构图中,反向边也涉及交换节点 ID 及其类型。此函数可以在 exclude_edges 函数之前使用,以帮助查找目标边。注意:找到的反向边可能在原始图中并不实际存在。并且可能会添加重复的边,因为反向边可能已经存在于 edges 中。

参数:
  • edges (Union[Dict[str, torch.Tensor], torch.Tensor]) –

    • 如果采样子图是同构的,则 edges 应该是一个 N*2 的张量。

    • 如果采样子图是异构的,则 edges 应该是一个字典,键为边类型,值为对应的要排除的边。

  • reverse_etypes_mapping (Dict[str, str], optional) – 原始边类型到其反向边类型的映射。

返回值:

包含原始边及其反向对应边的节点对。

返回值类型:

Union[Dict[str, torch.Tensor], torch.Tensor]

示例

>>> edges = {"A:r:B": torch.tensor([[0, 1],[1, 2]]))}
>>> print(gb.add_reverse_edges(edges, {"A:r:B": "B:rr:A"}))
{'A:r:B': torch.tensor([[0, 1],[1, 2]]),
'B:rr:A': torch.tensor([[1, 0],[2, 1]])}
>>> edges = torch.tensor([[0, 1],[1, 2]])
>>> print(gb.add_reverse_edges(edges))
torch.tensor([[1, 0],[2, 1]])