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 上。
- 返回类型: