dgl.distributed.sample_etype_neighbors

dgl.distributed.sample_etype_neighbors(g, nodes, fanout, edge_dir='in', prob=None, exclude_edges=None, replace=False, etype_sorted=True, use_graphbolt=False)[source]

从分布式图中的给定节点邻居进行采样。

对于每个节点,将随机选择一定数量的入边(当 edge_dir == 'out' 时为出边)。返回的图将包含原始图中的所有节点,但仅包含采样的边。

节点/边特征不予保留。采样的边的原始 ID 以 dgl.EID 特征的形式存储在返回的图中。

此函数假定输入是同构的 DGLGraph,其中的边按其边类型排序。采样的子图也以同构图格式存储。也就是说,所有节点和边都被分配了唯一 ID(与此相对,在 DGLGraph 中通常使用类型名称和节点/边 ID 来标识节点或边)。我们将此类 ID 称为 同构 ID。用户可以使用 dgl.distributed.GraphPartitionBook.map_to_per_ntype()dgl.distributed.GraphPartitionBook.map_to_per_etype() 来确定它们的节点/边类型以及该类型的节点/边 ID。

参数:
  • g (DistGraph) – 分布式图。

  • nodes (tensordict) – 用于采样邻居的节点 ID。如果它是 dict,则应仅包含一个键值对,以便与 dgl.sampling.sample_neighbors API 保持一致。

  • fanout (intdict[etype, int]) –

    对于每个节点按边类型采样的边数。如果给定整数,DGL 假定所有边类型都应用相同的 fanout。

    如果给定 -1,则选择所有邻居。

  • edge_dir (str, 可选) –

    确定是采样入边还是出边。

    可以是 in 表示入边,或者 out 表示出边。

  • prob (str, 可选) –

    用作与节点每个邻边相关的(未归一化)概率的特征名称。每个特征必须只包含一个元素。

    特征必须是非负浮点数,并且对于每个节点,入边/出边特征的总和必须为正(尽管它们不必总和为一)。否则,结果将是未定义的。

  • exclude_edges (tensor, 可选) – 采样时要排除的边。使用同构边 ID。

  • replace (bool, 可选) –

    如果为 True,则有放回采样。

    有放回采样时,采样的子图可能包含平行边。

    无放回采样时,如果 fanout > 邻居数量,则采样所有邻居。如果 fanout == -1,则收集所有邻居。

  • etype_sorted (bool, 可选) – 指示边类型是否已排序。

  • use_graphbolt (bool, 可选) – 是否使用 GraphBolt 进行采样。

返回:

一个仅包含采样的邻居边的采样子图。它在 CPU 上。

返回类型:

DGLGraph