class_docstr: Sampler that restricts data loading to a subset of the dataset.
  
  It is especially useful in conjunction with
  :class:`torch.nn.parallel.DistributedDataParallel`. In such case, each
  process can pass a DistributedSampler instance as a DataLoader sampler,
  and load a subset of the original dataset that is exclusive to it.
  
  Dataset is assumed to be of constant size.
class_docstr_tok: ["Sampler","that","restricts","data","loading","to","a","subset","of","the","dataset",".","It","is","especially","useful","in","conjunction","with",":","class",":","`","torch.nn.parallel.DistributedDataParallel","`",".","In","such","case",",","each","process","can","pass","a","DistributedSampler","instance","as","a","DataLoader","sampler",",","and","load","a","subset","of","the","original","dataset","that","is","exclusive","to","it",".","Dataset","is","assumed","to","be","of","constant","size","."]
docstr: Initialization.
  
  Parameters
  ----------
  dataset : torch.utils.data.Dataset
      Dataset used for sampling.
  num_replicas : int
      Number of processes participating in distributed training. Default: World size.
  rank : int
      Rank of the current process within num_replicas. Default: Current rank.
  shuffle : bool
      If true (default), sampler will shuffle the indices.
code: def __init__(
      self, dataset, indices, num_replicas=None, rank=None, shuffle=True
  ):
      """
      Initialization.
  
      Parameters
      ----------
      dataset : torch.utils.data.Dataset
          Dataset used for sampling.
      num_replicas : int
          Number of processes participating in distributed training. Default: World size.
      rank : int
          Rank of the current process within num_replicas. Default: Current rank.
      shuffle : bool
          If true (default), sampler will shuffle the indices.
      """
      if num_replicas is None:
          if not dist.is_available():
              raise RuntimeError(
                  "Requires distributed package to be available"
              )
          num_replicas = dist.get_world_size()
      if rank is None:
          if not dist.is_available():
              raise RuntimeError(
                  "Requires distributed package to be available"
              )
          rank = dist.get_rank()
      self.dataset = dataset
      self.num_replicas = num_replicas
      self.rank = rank
      self.epoch = 0
      self.indices = indices
      self.num_samples = int(
          math.ceil(len(self.indices) * 1.0 / self.num_replicas)
      )
      self.total_size = self.num_samples * self.num_replicas
      self.shuffle = shuffle
  
imports: import math
  import random
  import numpy
  import torch
  import torch.distributed
  from PIL import Image, ImageEnhance, ImageOps
  from torch.utils.data import Sampler
label_desc: Use image node_id 1 to create a new SubsetDistributedSampler object from inherited base classes: Sampler with example: obj = SubsetDistributedSampler(dataset, indices, num_replicas, rank, shuffle)