/TensorFlow 2.3

# tf.keras.layers.experimental.preprocessing.RandomRotation

Randomly rotate each image.

Inherits From: `Layer`

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 shape:

4D tensor with shape: `(samples, height, width, channels)`, data_format='channels_last'.

#### Output shape:

4D tensor with shape: `(samples, height, width, channels)`, data_format='channels_last'.

#### Input shape:

4D tensor with shape: `(samples, height, width, channels)`, data_format='channels_last'.

#### Output shape:

4D tensor with shape: `(samples, height, width, channels)`, data_format='channels_last'.

Raise
`ValueError` if either bound is not between [0, 1], or upper bound is less than lower bound.
Attributes
`factor` a float represented as fraction of 2pi, 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'}`).
• 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)`
`interpolation` Interpolation mode. Supported values: "nearest", "bilinear".
`seed` Integer. Used to create a random seed.
`name` A string, the name of the layer.