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 __init__(
      self,
      batchsize_per_replica,
      shuffle,
      transform,
      num_samples,
      crop_size,
      class_ratio,
      seed,
      length=None,
      async_gpu_copy: bool = False,
  ):
      if length is None:
          # If length not provided, set to be same as num_samples
          length = num_samples
  
      dataset = RandomImageBinaryClassDataset(
          crop_size, class_ratio, length, seed
      )
      super().__init__(
          dataset,
          batchsize_per_replica,
          shuffle,
          transform,
          num_samples,
      )
      self.async_gpu_copy = async_gpu_copy
  
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 1 to create a new SyntheticImageStreamingDataset object from inherited base classes: ClassyDataset with example: obj = SyntheticImageStreamingDataset(batchsize_per_replica, shuffle, transform, num_samples, crop_size, class_ratio, seed, length, async_gpu_copy)