Skip to content

random_flip

Random Flip Layer API

This module provides classes to build random flip layers.

Classes:

Classes

RandomFlip2D

RandomFlip2D(horizontal: bool = True, vertical: bool = True, **kwargs)

A preprocessing layer which randomly flips images during training.

This layer will flip the images horizontally and or vertically based on the mode attribute. During inference time, the output will be identical to input. Call the layer with training=True to flip the input. 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.

Parameters:

  • horizontal (bool, default: True ) –

    Whether to flip the images horizontally.

  • vertical (bool, default: True ) –

    Whether to flip the images vertically

Source code in neuralspot_edge/layers/preprocessing/random_flip.py
def __init__(self, horizontal: bool = True, vertical: bool = True, **kwargs):
    """A preprocessing layer which randomly flips images during training.

    This layer will flip the images horizontally and or vertically based on the
    `mode` attribute. During inference time, the output will be identical to
    input. Call the layer with `training=True` to flip the input.
    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:
        horizontal (bool): Whether to flip the images horizontally.
        vertical (bool): Whether to flip the images vertically
    """
    super().__init__(**kwargs)
    self.horizontal = horizontal
    self.vertical = vertical

Functions

get_random_transformations
get_random_transformations(input_shape) -> dict

Generate random flip transformations.

Parameters:

  • input_shape (tuple[int, ...]) –

    Input shape.

Returns:

  • dict ( dict ) –

    Dictionary containing the random flip transformations.

Source code in neuralspot_edge/layers/preprocessing/random_flip.py
def get_random_transformations(self, input_shape) -> dict:
    """Generate random flip transformations.

    Args:
        input_shape (tuple[int, ...]): Input shape.

    Returns:
        dict: Dictionary containing the random flip transformations.
    """
    transforms = {}
    batch_size = input_shape[0]

    if self.horizontal:
        horizontal = self.backend.random.uniform(shape=(batch_size, 1, 1, 1), seed=self.random_generator)
        transforms["horizontal"] = horizontal
    if self.vertical:
        vertical = self.backend.random.uniform(shape=(batch_size, 1, 1, 1), seed=self.random_generator)
        transforms["vertical"] = vertical
    return transforms