class_docstr: Description
  -----------
  GraphSAINT with node sampler.
  
  Parameters
  ----------
  node_budget : int
      the expected number of nodes in each subgraph, which is specifically explained in the paper.
class_docstr_tok: ["Description","--","--","--","--","--","-","GraphSAINT","with","node","sampler",".","Parameters","--","--","--","--","--","node_budget",":","int","the","expected","number","of","nodes","in","each","subgraph",",","which","is","specifically","explained","in","the","paper","."]
code: def __sample__(self):
      if self.prob is None:
          self.prob = self.train_g.in_degrees().float().clamp(min=1)
  
      sampled_nodes = th.multinomial(
          self.prob, num_samples=self.node_budget, replacement=True
      ).unique()
      return sampled_nodes.numpy()
  
imports: import math
  import os
  import random
  import time
  import dgl
  import dgl.function
  import numpy
  import scipy
  import torch
  from dgl.sampling import pack_traces, random_walk
  from torch.utils.data import DataLoader
label_desc: Use image node_id 3 for calling the SAINTNodeSampler obj's underlying member method code with example usage: obj.__sample__() and returns: sampled_nodes