class_docstr: A preprocessing layer which randomly rotates images during training.
  
  This layer will apply random rotations to each image, filling empty space
  according to `fill_mode`.
  
  By default, random rotations are only applied during training.
  At inference time, the layer does nothing. If you need to apply random
  rotations at inference time, set `training` to True when calling the layer.
  
  Input pixel values can be of any range (e.g. `[0., 1.)` or `[0, 255]`) and
  of integer or floating point dtype.
  By default, the layer will output floats.
  
  **Note:** This layer is safe to use inside a `tf.data` pipeline
  (independently of which backend you're using).
  
  Input shape:
      3D (unbatched) or 4D (batched) tensor with shape:
      `(..., height, width, channels)`, in `"channels_last"` format
  
  Output shape:
      3D (unbatched) or 4D (batched) tensor with shape:
      `(..., height, width, channels)`, in `"channels_last"` format
  
  Args:
      factor: a float represented as fraction of 2 Pi, or a tuple of size 2
          representing lower and upper bound for rotating clockwise and
          counter-clockwise. A positive values means rotating
          counter clock-wise,
          while a negative value means clock-wise.
          When represented as a single
          float, this value is used for both the upper and lower bound.
          For instance, `factor=(-0.2, 0.3)`
          results in an output rotation by a random
          amount in the range `[-20% * 2pi, 30% * 2pi]`.
          `factor=0.2` results in an
          output rotating by a random amount
          in the range `[-20% * 2pi, 20% * 2pi]`.
      fill_mode: Points outside the boundaries of the input are filled
          according to the given mode
          (one of `{"constant", "reflect", "wrap", "nearest"}`).
          - *reflect*: `(d c b a | a b c d | d c b a)`
              The input is extended by reflecting about
              the edge of the last pixel.
          - *constant*: `(k k k k | a b c d | k k k k)`
              The input is extended by
              filling all values beyond the edge with
              the same constant value k = 0.
          - *wrap*: `(a b c d | a b c d | a b c d)` The input is extended by
              wrapping around to the opposite edge.
          - *nearest*: `(a a a a | a b c d | d d d d)`
              The input is extended by the nearest pixel.
      interpolation: Interpolation mode. Supported values: `"nearest"`,
          `"bilinear"`.
      seed: Integer. Used to create a random seed.
      fill_value: a float represents the value to be filled outside
          the boundaries when `fill_mode="constant"`.
class_docstr_tok: ["A","preprocessing","layer","which","randomly","rotates","images","during","training",".","This","layer","will","apply","random","rotations","to","each","image",",","filling","empty","space","according","to","`","fill_mode","`",".","By","default",",","random","rotations","are","only","applied","during","training",".","At","inference","time",",","the","layer","does","nothing",".","If","you","need","to","apply","random","rotations","at","inference","time",",","set","`","training","`","to","True","when","calling","the","layer",".","Input","pixel","values","can","be","of","any","range","(","e.g",".","`","[","0.",",","1",".",")","`","or","`","[","0",",","255","]","`",")","and","of","integer","or","floating","point","dtype",".","By","default",",","the","layer","will","output","floats",".","*","*","Note",":","*","*","This","layer","is","safe","to","use","inside","a","`","tf.data","`","pipeline","(","independently","of","which","backend","you","'re","using",")",".","Input","shape",":","3D","(","unbatched",")","or","4D","(","batched",")","tensor","with","shape",":","`","(","...",",","height",",","width",",","channels",")","`",",","in","`","``","channels_last","''","`","format","Output","shape",":","3D","(","unbatched",")","or","4D","(","batched",")","tensor","with","shape",":","`","(","...",",","height",",","width",",","channels",")","`",",","in","`","``","channels_last","''","`","format","Args",":","factor",":","a","float","represented","as","fraction","of","2","Pi",",","or","a","tuple","of","size","2","representing","lower","and","upper","bound","for","rotating","clockwise","and","counter-clockwise",".","A","positive","values","means","rotating","counter","clock-wise",",","while","a","negative","value","means","clock-wise",".","When","represented","as","a","single","float",",","this","value","is","used","for","both","the","upper","and","lower","bound",".","For","instance",",","`","factor=","(","-0.2",",","0.3",")","`","results","in","an","output","rotation","by","a","random","amount","in","the","range","`","[","-20","%","*","2pi",",","30","%","*","2pi","]","`",".","`","factor=0.2","`","results","in","an","output","rotating","by","a","random","amount","in","the","range","`","[","-20","%","*","2pi",",","20","%","*","2pi","]","`",".","fill_mode",":","Points","outside","the","boundaries","of","the","input","are","filled","according","to","the","given","mode","(","one","of","`","{","``","constant","''",",","``","reflect","''",",","``","wrap","''",",","``","nearest","''","}","`",")",".","-","*","reflect","*",":","`","(","d","c","b","a","|","a","b","c","d","|","d","c","b","a",")","`","The","input","is","extended","by","reflecting","about","the","edge","of","the","last","pixel",".","-","*","constant","*",":","`","(","k","k","k","k","|","a","b","c","d","|","k","k","k","k",")","`","The","input","is","extended","by","filling","all","values","beyond","the","edge","with","the","same","constant","value","k","=","0",".","-","*","wrap","*",":","`","(","a","b","c","d","|","a","b","c","d","|","a","b","c","d",")","`","The","input","is","extended","by","wrapping","around","to","the","opposite","edge",".","-","*","nearest","*",":","`","(","a","a","a","a","|","a","b","c","d","|","d","d","d","d",")","`","The","input","is","extended","by","the","nearest","pixel",".","interpolation",":","Interpolation","mode",".","Supported","values",":","`","``","nearest","''","`",",","`","``","bilinear","''","`",".","seed",":","Integer",".","Used","to","create","a","random","seed",".","fill_value",":","a","float","represents","the","value","to","be","filled","outside","the","boundaries","when","`","fill_mode=","''","constant","''","`","."]
code: def _check_factor_range(self, input_number):
      if input_number > 1.0 or input_number < -1.0:
          raise ValueError(
              self._FACTOR_VALIDATION_ERROR
              + f"Received: input_number={input_number}"
          )
  
file_path: keras/keras/layers/preprocessing/random_rotation.py
imports: import numpy
  from keras import backend
  from keras.api_export import keras_export
  from keras.layers.preprocessing.tf_data_layer import TFDataLayer
  from keras.random.seed_generator import SeedGenerator
label_desc: Use image node_id 4 for calling the RandomRotation obj's underlying member method code with example usage: obj._check_factor_range(input_number) without return types