dgl.remove_self_loop

dgl.remove_self_loop(g, etype=None)[source]

移除图中每个节点的自环并返回一个新图。

参数:
  • g (DGLGraph) – 输入图。

  • etype (str(str, str, str), 可选) –

    边类型名称。允许的类型名称格式为

    • (str, str, str) 分别对应源节点类型、边类型和目标节点类型。

    • 或者一个 str 边类型名称,如果该名称在图中可以唯一标识一种三元组格式。

    如果图只有一种边类型,则可以省略。

备注

如果一个节点有多个自环,则全部移除。对于没有自环的节点不做任何操作。

此函数保留批处理信息。

示例

>>> import dgl
>>> import torch

同构图

>>> g = dgl.graph((torch.tensor([0, 0, 0, 1]), torch.tensor([1, 0, 0, 2])))
>>> g.edata['he'] = torch.arange(4).float().reshape(-1, 1)
>>> g = dgl.remove_self_loop(g)
>>> g
Graph(num_nodes=3, num_edges=2,
    edata_schemes={'he': Scheme(shape=(2,), dtype=torch.float32)})
>>> g.edata['he']
tensor([[0.],[3.]])

异构图

>>> g = dgl.heterograph({
...     ('user', 'follows', 'user'): (torch.tensor([0, 1, 1, 1, 2]),
...                                   torch.tensor([0, 0, 1, 1, 1])),
...     ('user', 'plays', 'game'): (torch.tensor([0, 1]),
...                                 torch.tensor([0, 1]))
...     })
>>> g = dgl.remove_self_loop(g, etype='follows')
>>> g.num_nodes('user')
3
>>> g.num_nodes('game')
2
>>> g.num_edges('follows')
2
>>> g.num_edges('plays')
2

另请参阅

add_self_loop