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 (tensor 或 dict) – 用于采样邻居的节点 ID。如果它是 dict,则应仅包含一个键值对,以便与 dgl.sampling.sample_neighbors API 保持一致。
fanout (int 或 dict[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 上。
- 返回类型: