dgl.distributed.sample_neighbors

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

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

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

节点/边特征不会被保留。采样到的边的原始 ID 将作为 dgl.EID 特征存储在返回的图中。

对于异构图,nodes 是一个字典,其键是节点类型,值是特定类型的节点 ID。

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

  • nodes (张量字典) – 要从中采样邻居的节点 ID。如果它是一个字典,则应只包含一个键值对,以便此 API 与 dgl.sampling.sample_neighbors 保持一致。

  • fanout (int) –

    每个节点要采样的边数。

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

  • edge_dir (str, 可选) –

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

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

  • prob (str, 可选) –

    用作与节点的每个邻居边相关的(未归一化)概率的特征名称。该特征对于每条边必须只有一个元素。

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

  • exclude_edges (张量字典, 可选) –

    在为种子节点采样邻居时要排除的边 ID。

    此参数可以接受单个 ID 张量或包含边类型和 ID 张量的字典。如果给定单个张量,则图必须只有一种节点类型。

  • replace (bool, 可选) –

    如果为 True,则带替换地采样。

    带替换采样时,采样到的子图可能包含平行边。

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

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

返回:

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

返回类型:

DGLGraph