class_docstr: Generate batches of tensor image data with real-time data augmentation.
   The data will be looped over (in batches).
  
  # Arguments
      featurewise_center: Boolean.
          Set input mean to 0 over the dataset, feature-wise.
      samplewise_center: Boolean. Set each sample mean to 0.
      featurewise_std_normalization: Boolean.
          Divide inputs by std of the dataset, feature-wise.
      samplewise_std_normalization: Boolean. Divide each input by its std.
      zca_whitening: Boolean. Apply ZCA whitening.
      zca_epsilon: epsilon for ZCA whitening. Default is 1e-6.
      rotation_range: Int. Degree range for random rotations.
      width_shift_range: Float, 1-D array-like or int
          - float: fraction of total width, if < 1, or pixels if >= 1.
          - 1-D array-like: random elements from the array.
          - int: integer number of pixels from interval
              `(-width_shift_range, +width_shift_range)`
          - With `width_shift_range=2` possible values
              are integers `[-1, 0, +1]`,
              same as with `width_shift_range=[-1, 0, +1]`,
              while with `width_shift_range=1.0` possible values are floats
              in the interval `[-1.0, +1.0)`.
      height_shift_range: Float, 1-D array-like or int
          - float: fraction of total height, if < 1, or pixels if >= 1.
          - 1-D array-like: random elements from the array.
          - int: integer number of pixels from interval
              `(-height_shift_range, +height_shift_range)`
          - With `height_shift_range=2` possible values
              are integers `[-1, 0, +1]`,
              same as with `height_shift_range=[-1, 0, +1]`,
              while with `height_shift_range=1.0` possible values are floats
              in the interval `[-1.0, +1.0)`.
      brightness_range: Tuple or list of two floats. Range for picking
          a brightness shift value from.
      shear_range: Float. Shear Intensity
          (Shear angle in counter-clockwise direction in degrees)
      zoom_range: Float or [lower, upper]. Range for random zoom.
          If a float, `[lower, upper] = [1-zoom_range, 1+zoom_range]`.
      channel_shift_range: Float. Range for random channel shifts.
      fill_mode: One of {"constant", "nearest", "reflect" or "wrap"}.
          Default is 'nearest'.
          Points outside the boundaries of the input are filled
          according to the given mode:
          - 'constant': kkkkkkkk|abcd|kkkkkkkk (cval=k)
          - 'nearest':  aaaaaaaa|abcd|dddddddd
          - 'reflect':  abcddcba|abcd|dcbaabcd
          - 'wrap':  abcdabcd|abcd|abcdabcd
      cval: Float or Int.
          Value used for points outside the boundaries
          when `fill_mode = "constant"`.
      horizontal_flip: Boolean. Randomly flip inputs horizontally.
      vertical_flip: Boolean. Randomly flip inputs vertically.
      rescale: rescaling factor. Defaults to None.
          If None or 0, no rescaling is applied,
          otherwise we multiply the data by the value provided
          (after applying all other transformations).
      preprocessing_function: function that will be applied on each input.
          The function will run after the image is resized and augmented.
          The function should take one argument:
          one image (NumPy tensor with rank 3),
          and should output a NumPy tensor with the same shape.
      data_format: Image data format,
          either "channels_first" or "channels_last".
          "channels_last" mode means that the images should have shape
          `(samples, height, width, channels)`,
          "channels_first" mode means that the images should have shape
          `(samples, channels, height, width)`.
          It defaults to the `image_data_format` value found in your
          Keras config file at `~/.keras/keras.json`.
          If you never set it, then it will be "channels_last".
      validation_split: Float. Fraction of images reserved for validation
          (strictly between 0 and 1).
      interpolation_order: int, order to use for
          the spline interpolation. Higher is slower.
      dtype: Dtype to use for the generated arrays.
  
  # Examples
  Example of using `.flow(x, y)`:
  
  ```python
  (x_train, y_train), (x_test, y_test) = cifar10.load_data()
  y_train = np_utils.to_categorical(y_train, num_classes)
  y_test = np_utils.to_categorical(y_test, num_classes)
  
  datagen = ImageDataGenerator(
      featurewise_center=True,
      featurewise_std_normalization=True,
      rotation_range=20,
      width_shift_range=0.2,
      height_shift_range=0.2,
      horizontal_flip=True)
  
  # compute quantities required for featurewise normalization
  # (std, mean, and principal components if ZCA whitening is applied)
  datagen.fit(x_train)
  
  # fits the model on batches with real-time data augmentation:
  model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),
                      steps_per_epoch=len(x_train) / 32, epochs=epochs)
  
  # here's a more "manual" example
  for e in range(epochs):
      print('Epoch', e)
      batches = 0
      for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32):
          model.fit(x_batch, y_batch)
          batches += 1
          if batches >= len(x_train) / 32:
              # we need to break the loop by hand because
              # the generator loops indefinitely
              break
  ```
  Example of using `.flow_from_directory(directory)`:
  
  ```python
  train_datagen = ImageDataGenerator(
          rescale=1./255,
          shear_range=0.2,
          zoom_range=0.2,
          horizontal_flip=True)
  
  test_datagen = ImageDataGenerator(rescale=1./255)
  
  train_generator = train_datagen.flow_from_directory(
          'data/train',
          target_size=(150, 150),
          batch_size=32,
          class_mode='binary')
  
  validation_generator = test_datagen.flow_from_directory(
          'data/validation',
          target_size=(150, 150),
          batch_size=32,
          class_mode='binary')
  
  model.fit_generator(
          train_generator,
          steps_per_epoch=2000,
          epochs=50,
          validation_data=validation_generator,
          validation_steps=800)
  ```
  
  Example of transforming images and masks together.
  
  ```python
  # we create two instances with the same arguments
  data_gen_args = dict(featurewise_center=True,
                       featurewise_std_normalization=True,
                       rotation_range=90,
                       width_shift_range=0.1,
                       height_shift_range=0.1,
                       zoom_range=0.2)
  image_datagen = ImageDataGenerator(**data_gen_args)
  mask_datagen = ImageDataGenerator(**data_gen_args)
  
  # Provide the same seed and keyword arguments to the fit and flow methods
  seed = 1
  image_datagen.fit(images, augment=True, seed=seed)
  mask_datagen.fit(masks, augment=True, seed=seed)
  
  image_generator = image_datagen.flow_from_directory(
      'data/images',
      class_mode=None,
      seed=seed)
  
  mask_generator = mask_datagen.flow_from_directory(
      'data/masks',
      class_mode=None,
      seed=seed)
  
  # combine generators into one which yields image and masks
  train_generator = zip(image_generator, mask_generator)
  
  model.fit_generator(
      train_generator,
      steps_per_epoch=2000,
      epochs=50)
  ```
  
  Example of using ```.flow_from_dataframe(dataframe, directory,
                                          x_col, y_col)```:
  
  ```python
  
  train_df = pandas.read_csv("./train.csv")
  valid_df = pandas.read_csv("./valid.csv")
  
  train_datagen = ImageDataGenerator(
          rescale=1./255,
          shear_range=0.2,
          zoom_range=0.2,
          horizontal_flip=True)
  
  test_datagen = ImageDataGenerator(rescale=1./255)
  
  train_generator = train_datagen.flow_from_dataframe(
          dataframe=train_df,
          directory='data/train',
          x_col="filename",
          y_col="class",
          target_size=(150, 150),
          batch_size=32,
          class_mode='binary')
  
  validation_generator = test_datagen.flow_from_dataframe(
          dataframe=valid_df,
          directory='data/validation',
          x_col="filename",
          y_col="class",
          target_size=(150, 150),
          batch_size=32,
          class_mode='binary')
  
  model.fit_generator(
          train_generator,
          steps_per_epoch=2000,
          epochs=50,
          validation_data=validation_generator,
          validation_steps=800)
  ```
class_docstr_tok: ["Generate","batches","of","tensor","image","data","with","real-time","data","augmentation",".","The","data","will","be","looped","over","(","in","batches",")",".","#","Arguments","featurewise_center",":","Boolean",".","Set","input","mean","to","0","over","the","dataset",",","feature-wise",".","samplewise_center",":","Boolean",".","Set","each","sample","mean","to","0.","featurewise_std_normalization",":","Boolean",".","Divide","inputs","by","std","of","the","dataset",",","feature-wise",".","samplewise_std_normalization",":","Boolean",".","Divide","each","input","by","its","std",".","zca_whitening",":","Boolean",".","Apply","ZCA","whitening",".","zca_epsilon",":","epsilon","for","ZCA","whitening",".","Default","is","1e-6",".","rotation_range",":","Int",".","Degree","range","for","random","rotations",".","width_shift_range",":","Float",",","1-D","array-like","or","int","-","float",":","fraction","of","total","width",",","if","<","1",",","or","pixels","if",">","=","1",".","-","1-D","array-like",":","random","elements","from","the","array",".","-","int",":","integer","number","of","pixels","from","interval","`","(","-width_shift_range",",","+width_shift_range",")","`","-","With","`","width_shift_range=2","`","possible","values","are","integers","`","[","-1",",","0",",","+1","]","`",",","same","as","with","`","width_shift_range=","[","-1",",","0",",","+1","]","`",",","while","with","`","width_shift_range=1.0","`","possible","values","are","floats","in","the","interval","`","[","-1.0",",","+1.0",")","`",".","height_shift_range",":","Float",",","1-D","array-like","or","int","-","float",":","fraction","of","total","height",",","if","<","1",",","or","pixels","if",">","=","1",".","-","1-D","array-like",":","random","elements","from","the","array",".","-","int",":","integer","number","of","pixels","from","interval","`","(","-height_shift_range",",","+height_shift_range",")","`","-","With","`","height_shift_range=2","`","possible","values","are","integers","`","[","-1",",","0",",","+1","]","`",",","same","as","with","`","height_shift_range=","[","-1",",","0",",","+1","]","`",",","while","with","`","height_shift_range=1.0","`","possible","values","are","floats","in","the","interval","`","[","-1.0",",","+1.0",")","`",".","brightness_range",":","Tuple","or","list","of","two","floats",".","Range","for","picking","a","brightness","shift","value","from",".","shear_range",":","Float",".","Shear","Intensity","(","Shear","angle","in","counter-clockwise","direction","in","degrees",")","zoom_range",":","Float","or","[","lower",",","upper","]",".","Range","for","random","zoom",".","If","a","float",",","`","[","lower",",","upper","]","=","[","1-zoom_range",",","1+zoom_range","]","`",".","channel_shift_range",":","Float",".","Range","for","random","channel","shifts",".","fill_mode",":","One","of","{","``","constant","''",",","``","nearest","''",",","``","reflect","''","or","``","wrap","''","}",".","Default","is","'nearest","'",".","Points","outside","the","boundaries","of","the","input","are","filled","according","to","the","given","mode",":","-","'constant","'",":","kkkkkkkk|abcd|kkkkkkkk","(","cval=k",")","-","'nearest","'",":","aaaaaaaa|abcd|dddddddd","-","'reflect","'",":","abcddcba|abcd|dcbaabcd","-","'wrap","'",":","abcdabcd|abcd|abcdabcd","cval",":","Float","or","Int",".","Value","used","for","points","outside","the","boundaries","when","`","fill_mode","=","``","constant","''","`",".","horizontal_flip",":","Boolean",".","Randomly","flip","inputs","horizontally",".","vertical_flip",":","Boolean",".","Randomly","flip","inputs","vertically",".","rescale",":","rescaling","factor",".","Defaults","to","None",".","If","None","or","0",",","no","rescaling","is","applied",",","otherwise","we","multiply","the","data","by","the","value","provided","(","after","applying","all","other","transformations",")",".","preprocessing_function",":","function","that","will","be","applied","on","each","input",".","The","function","will","run","after","the","image","is","resized","and","augmented",".","The","function","should","take","one","argument",":","one","image","(","NumPy","tensor","with","rank","3",")",",","and","should","output","a","NumPy","tensor","with","the","same","shape",".","data_format",":","Image","data","format",",","either","``","channels_first","''","or","``","channels_last","''",".","``","channels_last","''","mode","means","that","the","images","should","have","shape","`","(","samples",",","height",",","width",",","channels",")","`",",","``","channels_first","''","mode","means","that","the","images","should","have","shape","`","(","samples",",","channels",",","height",",","width",")","`",".","It","defaults","to","the","`","image_data_format","`","value","found","in","your","Keras","config","file","at","`","~\/.keras\/keras.json","`",".","If","you","never","set","it",",","then","it","will","be","``","channels_last","''",".","validation_split",":","Float",".","Fraction","of","images","reserved","for","validation","(","strictly","between","0","and","1",")",".","interpolation_order",":","int",",","order","to","use","for","the","spline","interpolation",".","Higher","is","slower",".","dtype",":","Dtype","to","use","for","the","generated","arrays",".","#","Examples","Example","of","using","`",".flow","(","x",",","y",")","`",":","``","`","python","(","x_train",",","y_train",")",",","(","x_test",",","y_test",")","=","cifar10.load_data","(",")","y_train","=","np_utils.to_categorical","(","y_train",",","num_classes",")","y_test","=","np_utils.to_categorical","(","y_test",",","num_classes",")","datagen","=","ImageDataGenerator","(","featurewise_center=True",",","featurewise_std_normalization=True",",","rotation_range=20",",","width_shift_range=0.2",",","height_shift_range=0.2",",","horizontal_flip=True",")","#","compute","quantities","required","for","featurewise","normalization","#","(","std",",","mean",",","and","principal","components","if","ZCA","whitening","is","applied",")","datagen.fit","(","x_train",")","#","fits","the","model","on","batches","with","real-time","data","augmentation",":","model.fit_generator","(","datagen.flow","(","x_train",",","y_train",",","batch_size=32",")",",","steps_per_epoch=len","(","x_train",")","\/","32",",","epochs=epochs",")","#","here","'s","a","more","``","manual","''","example","for","e","in","range","(","epochs",")",":","print","(","'Epoch","'",",","e",")","batches","=","0","for","x_batch",",","y_batch","in","datagen.flow","(","x_train",",","y_train",",","batch_size=32",")",":","model.fit","(","x_batch",",","y_batch",")","batches","+=","1","if","batches",">","=","len","(","x_train",")","\/","32",":","#","we","need","to","break","the","loop","by","hand","because","#","the","generator","loops","indefinitely","break","``","`","Example","of","using","`",".flow_from_directory","(","directory",")","`",":","``","`","python","train_datagen","=","ImageDataGenerator","(","rescale=1.\/255",",","shear_range=0.2",",","zoom_range=0.2",",","horizontal_flip=True",")","test_datagen","=","ImageDataGenerator","(","rescale=1.\/255",")","train_generator","=","train_datagen.flow_from_directory","(","'data\/train","'",",","target_size=","(","150",",","150",")",",","batch_size=32",",","class_mode='binary","'",")","validation_generator","=","test_datagen.flow_from_directory","(","'data\/validation","'",",","target_size=","(","150",",","150",")",",","batch_size=32",",","class_mode='binary","'",")","model.fit_generator","(","train_generator",",","steps_per_epoch=2000",",","epochs=50",",","validation_data=validation_generator",",","validation_steps=800",")","``","`","Example","of","transforming","images","and","masks","together",".","``","`","python","#","we","create","two","instances","with","the","same","arguments","data_gen_args","=","dict","(","featurewise_center=True",",","featurewise_std_normalization=True",",","rotation_range=90",",","width_shift_range=0.1",",","height_shift_range=0.1",",","zoom_range=0.2",")","image_datagen","=","ImageDataGenerator","(","*","*","data_gen_args",")","mask_datagen","=","ImageDataGenerator","(","*","*","data_gen_args",")","#","Provide","the","same","seed","and","keyword","arguments","to","the","fit","and","flow","methods","seed","=","1","image_datagen.fit","(","images",",","augment=True",",","seed=seed",")","mask_datagen.fit","(","masks",",","augment=True",",","seed=seed",")","image_generator","=","image_datagen.flow_from_directory","(","'data\/images","'",",","class_mode=None",",","seed=seed",")","mask_generator","=","mask_datagen.flow_from_directory","(","'data\/masks","'",",","class_mode=None",",","seed=seed",")","#","combine","generators","into","one","which","yields","image","and","masks","train_generator","=","zip","(","image_generator",",","mask_generator",")","model.fit_generator","(","train_generator",",","steps_per_epoch=2000",",","epochs=50",")","``","`","Example","of","using","``","`",".flow_from_dataframe","(","dataframe",",","directory",",","x_col",",","y_col",")","``","`",":","``","`","python","train_df","=","pandas.read_csv","(","``",".\/train.csv","''",")","valid_df","=","pandas.read_csv","(","``",".\/valid.csv","''",")","train_datagen","=","ImageDataGenerator","(","rescale=1.\/255",",","shear_range=0.2",",","zoom_range=0.2",",","horizontal_flip=True",")","test_datagen","=","ImageDataGenerator","(","rescale=1.\/255",")","train_generator","=","train_datagen.flow_from_dataframe","(","dataframe=train_df",",","directory='data\/train","'",",","x_col=","''","filename","''",",","y_col=","''","class","''",",","target_size=","(","150",",","150",")",",","batch_size=32",",","class_mode='binary","'",")","validation_generator","=","test_datagen.flow_from_dataframe","(","dataframe=valid_df",",","directory='data\/validation","'",",","x_col=","''","filename","''",",","y_col=","''","class","''",",","target_size=","(","150",",","150",")",",","batch_size=32",",","class_mode='binary","'",")","model.fit_generator","(","train_generator",",","steps_per_epoch=2000",",","epochs=50",",","validation_data=validation_generator",",","validation_steps=800",")","``","`"]
docstr: Generates random parameters for a transformation.
  
  # Arguments
      seed: Random seed.
      img_shape: Tuple of integers.
          Shape of the image that is transformed.
  
  # Returns
      A dictionary containing randomly chosen parameters describing the
      transformation.
docstr_tok: ["Generates","random","parameters","for","a","transformation",".","#","Arguments","seed",":","Random","seed",".","img_shape",":","Tuple","of","integers",".","Shape","of","the","image","that","is","transformed",".","#","Returns","A","dictionary","containing","randomly","chosen","parameters","describing","the","transformation","."]
code: def get_random_transform(self, img_shape, seed=None):
      """Generates random parameters for a transformation.
  
      # Arguments
          seed: Random seed.
          img_shape: Tuple of integers.
              Shape of the image that is transformed.
  
      # Returns
          A dictionary containing randomly chosen parameters describing the
          transformation.
      """
      img_row_axis = self.row_axis - 1
      img_col_axis = self.col_axis - 1
  
      if seed is not None:
          np.random.seed(seed)
  
      if self.rotation_range:
          theta = np.random.uniform(
              -self.rotation_range, self.rotation_range
          )
      else:
          theta = 0
  
      if self.height_shift_range:
          try:  # 1-D array-like or int
              tx = np.random.choice(self.height_shift_range)
              tx *= np.random.choice([-1, 1])
          except ValueError:  # floating point
              tx = np.random.uniform(
                  -self.height_shift_range, self.height_shift_range
              )
          if np.max(self.height_shift_range) < 1:
              tx *= img_shape[img_row_axis]
      else:
          tx = 0
  
      if self.width_shift_range:
          try:  # 1-D array-like or int
              ty = np.random.choice(self.width_shift_range)
              ty *= np.random.choice([-1, 1])
          except ValueError:  # floating point
              ty = np.random.uniform(
                  -self.width_shift_range, self.width_shift_range
              )
          if np.max(self.width_shift_range) < 1:
              ty *= img_shape[img_col_axis]
      else:
          ty = 0
  
      if self.shear_range:
          shear = np.random.uniform(-self.shear_range, self.shear_range)
      else:
          shear = 0
  
      if self.zoom_range[0] == 1 and self.zoom_range[1] == 1:
          zx, zy = 1, 1
      else:
          zx, zy = np.random.uniform(
              self.zoom_range[0], self.zoom_range[1], 2
          )
  
      flip_horizontal = (
          np.random.random() < 0.5
      ) * self.horizontal_flip
      flip_vertical = (np.random.random() < 0.5) * self.vertical_flip
  
      channel_shift_intensity = None
      if self.channel_shift_range != 0:
          channel_shift_intensity = np.random.uniform(
              -self.channel_shift_range, self.channel_shift_range
          )
  
      brightness = None
      if self.brightness_range is not None:
          brightness = np.random.uniform(
              self.brightness_range[0], self.brightness_range[1]
          )
  
      transform_parameters = {
          "theta": theta,
          "tx": tx,
          "ty": ty,
          "shear": shear,
          "zx": zx,
          "zy": zy,
          "flip_horizontal": flip_horizontal,
          "flip_vertical": flip_vertical,
          "channel_shift_intensity": channel_shift_intensity,
          "brightness": brightness,
      }
  
      return transform_parameters
  
file_path: keras-preprocessing/keras_preprocessing/image/image_data_generator.py
imports: import warnings
  import numpy
  from .affine_transformations import apply_affine_transform, apply_brightness_shift, apply_channel_shift, flip_axis
  from .dataframe_iterator import DataFrameIterator
  from .directory_iterator import DirectoryIterator
  from .numpy_array_iterator import NumpyArrayIterator
label_desc: Use image node_id 6 for calling the ImageDataGenerator obj's underlying member method code with example usage: obj.get_random_transform(img_shape, seed) and returns: transform_parameters