dgl.distributed.sample_neighbors

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

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

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

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

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

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

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

  • fanout (int) –

    每个节点要采样的边数。

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

  • edge_dir (str, optional) –

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

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

  • prob (str, optional) –

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

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

  • replace (bool, optional) –

    如果为True,则进行有放回抽样。

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

    对于无放回抽样,如果fanout大于邻居数量,则所有邻居都会被抽样。如果fanout等于-1,则收集所有邻居。

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

Returns:

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

Return type:

DGLGraph