class_docstr: At every iteration, this will return m samples per class. For example,
  if dataloader's batchsize is 100, and m = 5, then 20 classes with 5 samples
  each will be returned
code: def __iter__(self):
      idx_list = [0] * self.list_size
      i = 0
      num_iters = self.calculate_num_iters()
      for _ in range(num_iters):
          c_f.NUMPY_RANDOM.shuffle(self.labels)
          if self.batch_size is None:
              curr_label_set = self.labels
          else:
              curr_label_set = self.labels[
                  : self.batch_size // self.m_per_class
              ]
          for label in curr_label_set:
              t = self.labels_to_indices[label]
              idx_list[
                  i : i + self.m_per_class
              ] = c_f.safe_random_choice(t, size=self.m_per_class)
              i += self.m_per_class
      return iter(idx_list)
  
file_path: pytorch-metric-learning/src/pytorch_metric_learning/samplers/m_per_class_sampler.py
imports: import torch
  from torch.utils.data.sampler import Sampler
  from ..utils import common_functions
label_desc: Use image node_id 3 for calling the MPerClassSampler obj's underlying member method code with example usage: obj.__iter__() and returns: iter