code: def create_reader(map_file, mean_file, is_training):
      if not os.path.exists(map_file) or not os.path.exists(mean_file):
          raise RuntimeError(
              "File '%s' or '%s' does not exist. Please run install_cifar10.py from DataSets/CIFAR-10 to fetch them"
              % (map_file, mean_file)
          )
  
      # transformation pipeline for the features has jitter/crop only when training
      transforms = []
      if is_training:
          transforms += [
              xforms.crop(
                  crop_type="RandomSide",
                  side_ratio=0.8,
                  jitter_type="uniRatio",
              )  # train uses jitter
          ]
      transforms += [
          xforms.scale(
              width=image_width,
              height=image_height,
              channels=num_channels,
              interpolations="linear",
          ),
          xforms.mean(mean_file),
      ]
      # deserializer
      return C.io.MinibatchSource(
          C.io.ImageDeserializer(
              map_file,
              C.io.StreamDefs(
                  features=C.io.StreamDef(
                      field="image", transforms=transforms
                  ),  # first column in map file is referred to as 'image'
                  labels=C.io.StreamDef(
                      field="label", shape=num_classes
                  ),
              ),
          ),  # and second as 'label'
          randomize=is_training,
      )
  
file_path: CNTK/Examples/Image/Classification/ConvNet/Python/ConvNetLRN_CIFAR10_DataAug.py
imports: from __future__ import print_function
  import os
  import math
  import numpy
  import cntk
  import _cntk_py
  import cntk.io.transforms
label_desc: Use image node_id 1 for calling a global function with example usage: create_reader(map_file, mean_file, is_training) and returns: C