class_docstr: Samples elements randomly over multiple epochs
  
  Arguments:
      data_source (Dataset): dataset to sample from
      num_iter (int) : Number of times to loop over the dataset
      start_itr (int) : which iteration to begin from
code: def __iter__(self):
      n = self.dataset_size
      # Determine number of epochs
      num_epochs = int(
          np.ceil(
              ((self.num_iter - self.start_itr) * self.batch_size)
              / float(n)
          )
      )
      out = np.concatenate(
          [np.random.permutation(n) for epoch in range(self.num_epochs)]
      )[-num_epochs * n : self.num_iter * self.batch_size]
      out = out[(self.start_itr * self.batch_size % n) :]
      return iter(out)
  
imports: import numpy
  import torch.utils.data
label_desc: Use image node_id 2 for calling the MultiEpochSampler obj's underlying member method code with example usage: obj.__iter__() and returns: iter