code: def data_iterator_caltech101(
      batch_size,
      train=True,
      rng=None,
      shuffle=True,
      width=128,
      height=128,
      padding=True,
      with_memory_cache=False,
      with_file_cache=False,
  ):
      """
      Provide DataIterator with :py:class:`Caltech101DataSource`
      with_memory_cache and with_file_cache option's default value is all False,
      because :py:class:`Caltech101DataSource` is able to store all data into memory.
      """
      return data_iterator(
          Caltech101DataSource(
              width=width,
              height=height,
              padding=padding,
              train=train,
              shuffle=shuffle,
              rng=rng,
          ),
          batch_size,
          rng,
          with_memory_cache,
          with_file_cache,
      )
  
file_path: nnabla/tutorial/caltech101_data.py
imports: import numpy
  import tarfile
  import zipfile
  from io import BytesIO
  from nnabla.logger import logger
  from nnabla.utils.data_iterator import data_iterator
  from nnabla.utils.data_source import DataSource
  from nnabla.utils.data_source_loader import download, get_data_home
  from nnabla.utils.image_utils import imresize, imread
label_desc: Use image node_id 1 for calling a global function with example usage: data_iterator_caltech101(batch_size, train, rng, shuffle, width, height, padding, with_memory_cache, with_file_cache) and returns: data_iterator