class_docstr: Synthetic image dataset that behaves like a streaming dataset.
  
  Requires a "num_samples" argument which decides the number of samples in the
  phase. Also takes an optional "length" input which sets the length of the
  dataset.
code: def iterator(self, *args, **kwargs):
      dataloader = DataloaderLimitWrapper(
          super().iterator(*args, **kwargs),
          self.num_samples // self.get_global_batchsize(),
      )
  
      if self.async_gpu_copy:
          dataloader = DataloaderAsyncGPUWrapper(dataloader)
  
      return dataloader
  
file_path: ClassyVision/classy_vision/dataset/classy_synthetic_image_streaming.py
imports: import torchvision.transforms
  from classy_vision.dataset import register_dataset
  from classy_vision.dataset.classy_dataset import ClassyDataset
  from classy_vision.dataset.core import RandomImageBinaryClassDataset
  from classy_vision.dataset.dataloader_async_gpu_wrapper import DataloaderAsyncGPUWrapper
  from classy_vision.dataset.dataloader_limit_wrapper import DataloaderLimitWrapper
  from classy_vision.dataset.transforms.util import build_field_transform_default_imagenet, ImagenetConstants
label_desc: Use image node_id 3 for calling the SyntheticImageStreamingDataset obj's underlying member method code with example usage: obj.iterator() and returns: dataloader