# tf.keras.layers.RandomRotation

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/keras-team/keras/tree/v2.14.0/keras/layers/preprocessing/image_preprocessing.py#L870-L1016) |

A preprocessing layer which randomly rotates images during training.

Inherits From: [`Layer`](https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/keras/layers/Layer), [`Module`](https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/Module)

#### View aliases


**Main aliases**

[`tf.keras.layers.experimental.preprocessing.RandomRotation`](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomRotation)

<br />

    tf.keras.layers.RandomRotation(
        factor,
        fill_mode='reflect',
        interpolation='bilinear',
        seed=None,
        fill_value=0.0,
        **kwargs
    )

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.

For an overview and full list of preprocessing layers, see the preprocessing
[guide](https://www.tensorflow.org/guide/keras/preprocessing_layers).

<br />

<br />

<br />

| ## Input shape ||
|---|---|
| `3D` | `unbatched) or 4D (batched) tensor with shape` <br /> `(..., height, width, channels)`, in `"channels_last"` format |

<br />

<br />

<br />

<br />

| ## Output shape ||
|---|---|
| `3D` | `unbatched) or 4D (batched) tensor with shape` <br /> `(..., height, width, channels)`, in `"channels_last"` format |

<br />

<br />

<br />

<br />

| ## 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"}`). <br /> - *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"`. |