全局统一

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 保证采样的对之间不会有边。

Parameters:
  • 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]))