UniformNegativeSamplerο
- class dgl.graphbolt.UniformNegativeSampler(datapipe, graph, negative_ratio)[source]ο
Bases:
NegativeSampler
Sample negative destination nodes for each source node based on a uniform distribution.
Functional name:
sample_uniform_negative
.Itβs important to note that the term βnegativeβ refers to false negatives, indicating that the sampled pairs are not ensured to be absent in the graph. For each edge
(u, v)
, it is supposed to generate negative_ratio pairs of negative edges(u, v')
, wherev'
is chosen uniformly from all the nodes in the graph.- Parameters:
datapipe (DataPipe) β The datapipe.
graph (FusedCSCSamplingGraph) β The graph on which to perform negative sampling.
negative_ratio (int) β The proportion of negative samples to positive samples.
Examples
>>> from dgl import graphbolt as gb >>> indptr = torch.LongTensor([0, 1, 2, 3, 4]) >>> indices = torch.LongTensor([1, 2, 3, 0]) >>> graph = gb.fused_csc_sampling_graph(indptr, indices) >>> seeds = torch.tensor([[0, 1], [1, 2], [2, 3], [3, 0]]) >>> item_set = gb.ItemSet(seeds, names="seeds") >>> item_sampler = gb.ItemSampler( ... item_set, batch_size=4,) >>> neg_sampler = gb.UniformNegativeSampler( ... item_sampler, graph, 2) >>> for minibatch in neg_sampler: ... print(minibatch.seeds) ... print(minibatch.labels) ... print(minibatch.indexes) tensor([[0, 1], [1, 2], [2, 3], [3, 0], [0, 1], [0, 3], [1, 1], [1, 2], [2, 1], [2, 0], [3, 0], [3, 2]]) tensor([1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.]) tensor([0, 1, 2, 3, 0, 0, 1, 1, 2, 2, 3, 3])