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 __init__(
      self, data_source, num_iter, start_itr=0, batch_size=128
  ):
      super().__init__(data_source)
      self.data_source = data_source
      self.dataset_size = len(self.data_source)
      self.num_iter = num_iter
      self.start_itr = start_itr
      self.batch_size = batch_size
      self.num_epochs = int(
          np.ceil(
              (self.num_iter * self.batch_size)
              / float(self.dataset_size)
          )
      )
  
      if (
          not isinstance(self.dataset_size, int)
          or self.dataset_size <= 0
      ):
          raise ValueError(
              "dataset size should be a positive integeral "
              "value, but got dataset_size={}".format(self.dataset_size)
          )
  
imports: import numpy
  import torch.utils.data
label_desc: Use image node_id 1 to create a new MultiEpochSampler object from inherited base classes: torch.utils.data with example: obj = MultiEpochSampler(data_source, num_iter, start_itr, batch_size)