dgl.sampling.global_uniform_negative_sampling
- dgl.sampling.global_uniform_negative_sampling(g, num_samples, exclude_self_loops=True, replace=False, etype=None, redundancy=None)[source]
执行负采样,生成源-目标对,使得具有给定类型的边不存在。
具体来说,此函数接收一个边类型和多个样本。它返回两个张量
src
和dst
,前者在[0, num_src)
范围内,后者在[0, num_dst)
范围内,其中num_src
和num_dst
分别表示源节点类型和目标节点类型的节点数量。它保证在源节点类型的src
和目标节点类型的dst
对应的对之间不会存在边。注意
这个负采样器会尝试生成尽可能多的负样本,但有时可能会返回少于
num_samples
的负样本。这种情况更可能发生在图非常小或非常密集,以至于没有很多唯一的负样本存在时。- Parameters:
g (DGLGraph) – The graph.
num_samples (int) – 要生成的负样本数量。
exclude_self_loops (bool, optional) –
是否从负样本中排除自循环。仅影响源节点类型和目标节点类型相同的边类型。
默认值:True。
replace (bool, optional) – Whether to sample with replacement. Setting it to True will make things faster. (Default: False)
冗余 (float, 可选) –
表示在拒绝采样过程中,实际生成多少更多的负样本,以找到唯一的配对。
增加它将增加获得
num_samples
负样本的可能性,但也会花费更多的时间和内存。(默认值:由图的密度自动确定)
- Returns:
源和目标对。
- Return type:
tuple[Tensor, Tensor]
示例
>>> g = dgl.graph(([0, 1, 2], [1, 2, 3])) >>> dgl.sampling.global_uniform_negative_sampling(g, 3) (tensor([0, 1, 3]), tensor([2, 0, 2]))