GlobalUniform

class dgl.dataloading.negative_sampler.GlobalUniform(k, exclude_self_loops=True, replace=False)[source]

基类: _BaseNegativeSampler

负采样器,根据均匀分布随机选择负样本的源-目标对。

对于类型为 (srctype, etype, dsttype) 的每条边 (u, v),DGL 会生成至多 k 对负边 (u', v'),其中 u' 从所有 srctype 类型的节点中均匀选择,v' 从所有 dsttype 类型的节点中均匀选择。生成的边也将具有类型 (srctype, etype, dsttype)。DGL 保证采样的对之间不会存在边。

参数:
  • k (int) – 每条边期望生成的负样本数量。

  • exclude_self_loops (bool, optional) – 是否从负样本中排除自环。(默认值: True)

  • replace (bool, optional) – 是否使用替换采样。将其设置为 True 可以加快速度。(默认值: False)

注意事项

这个负采样器会尝试生成尽可能多的负样本,但偶尔可能会返回少于每条边 k 个负样本。如果图非常小或非常稠密,以至于不存在很多唯一的负样本,这种情况更有可能发生。

示例

>>> g = dgl.graph(([0, 1, 2], [1, 2, 3]))
>>> neg_sampler = dgl.dataloading.negative_sampler.GlobalUniform(2, True)
>>> neg_sampler(g, torch.LongTensor([0, 1]))
(tensor([0, 1, 3, 2]), tensor([2, 0, 2, 1]))