class_docstr: Base class for image data iterators.
  
  Every `Iterator` must implement the `_get_batches_of_transformed_samples`
  method.
  
  # Arguments
      n: Integer, total number of samples in the dataset to loop over.
      batch_size: Integer, size of a batch.
      shuffle: Boolean, whether to shuffle the data between epochs.
      seed: Random seeding for data shuffling.
code: def __getitem__(self, idx):
      if idx >= len(self):
          raise ValueError(
              "Asked to retrieve element {idx}, "
              "but the Sequence "
              "has length {length}".format(idx=idx, length=len(self))
          )
      if self.seed is not None:
          np.random.seed(self.seed + self.total_batches_seen)
      self.total_batches_seen += 1
      if self.index_array is None:
          self._set_index_array()
      index_array = self.index_array[
          self.batch_size * idx : self.batch_size * (idx + 1)
      ]
      return self._get_batches_of_transformed_samples(index_array)
  
imports: import os
  import threading
  import numpy
  from keras_preprocessing import get_keras_submodule
  from .utils import array_to_img, img_to_array, load_img
label_desc: Use image node_id 3 for calling the Iterator obj's underlying member method code with example usage: obj.__getitem__(idx) and returns: self