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中。

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

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

    • 如果采样的子图是异质的,那么 edges 应该是一个边类型和对应要排除的边的字典。

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

Returns:

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

Return type:

联合[字典[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]])