tf.keras.layers.Normalization

A preprocessing layer that normalizes continuous features.

Inherits From: Layer, Operation

Used in the notebooks

Used in the guide Used in the tutorials

This layer will shift and scale inputs into a distribution centered around 0 with standard deviation 1. It accomplishes this by precomputing the mean and variance of the data, and calling (input - mean) / sqrt(var) at runtime.

The mean and variance values for the layer must be either supplied on construction or learned via adapt(). adapt() will compute the mean and variance of the data and store them as the layer's weights. adapt() should be called before fit(), evaluate(), or predict().

axis Integer, tuple of integers, or None. The axis or axes that should have a separate mean and variance for each index in the shape. For example, if shape is (None, 5) and axis=1, the layer will track 5 separate mean and variance values for the last axis. If axis is set to None, the layer will normalize all elements in the input by a scalar mean and variance. When -1, the last axis of the input is assumed to be a feature dimension and is normalized per index. Note that in the specific case of batched scalar inputs where the only axis is the batch axis, the default will normalize each index in the batch separately. In this case, consider passing axis=None. Defaults to -1.
mean The mean value(s) to use during normalization. The passed value(s) will be broadcast to the shape of the kept axes above; if the value(s) cannot be broadcast, an error will be raised when this layer's build() method is called. mean and variance must be specified together.
variance The variance value(s) to use during normalization. The passed value(s) will be broadcast to the shape of the kept axes above; if the value(s) cannot be broadcast, an error will be raised when this layer's build() method is called. mean and variance must be specified together.
invert If True, this layer will apply the inverse transformation to its inputs: it would turn a normalized input back into its original form.

Examples:

Calculate a global mean and variance by analyzing the dataset in adapt().

adapt_data = np.array([1., 2., 3., 4., 5.], dtype='float32')
input_data = np.array([1., 2., 3.], dtype='float32')
layer = keras.layers.Normalization(axis=None)
layer.adapt(adapt_data)
layer(input_data)
array([-1.4142135, -0.70710677, 0.], dtype=float32)

Calculate a mean and variance for each index on the last axis.

adapt_data = np.array([[0., 7., 4.],
                       [2., 9., 6.],
                       [0., 7., 4.],
                       [2., 9., 6.]], dtype='float32')
input_data = np.array([[0., 7., 4.]], dtype='float32')
layer = keras.layers.Normalization(axis=-1)
layer.adapt(adapt_data)
layer(input_data)
array([-1., -1., -1.], dtype=float32)

Pass the mean and variance directly.

input_data = np.array([[1.], [2.], [3.]], dtype='float32')
layer = keras.layers.Normalization(mean=3., variance=2.)
layer(input_data)
array([[-1.4142135 ],
       [-0.70710677],
       [ 0.        ]], dtype=float32)

Use the layer to de-normalize inputs (after adapting the layer).

adapt_data = np.array([[0., 7., 4.],
                       [2., 9., 6.],
                       [0., 7., 4.],
                       [2., 9., 6.]], dtype='float32')
input_data = np.array([[1., 2., 3.]], dtype='float32')
layer = keras.layers.Normalization(axis=-1, invert=True)
layer.adapt(adapt_data)
layer(input_data)
array([2., 10., 8.], dtype=float32)

input Retrieves the input tensor(s) of a symbolic operation.

Only returns the tensor(s) corresponding to the first time the operation was called.

output Retrieves the output tensor(s) of a layer.

Only returns the tensor(s) corresponding to the first time the operation was called.

Methods

adapt

View source

Computes the mean and variance of values in a dataset.

Calling adapt() on a Normalization layer is an alternative to passing in mean and variance arguments during layer construction. A Normalization layer should always either be adapted over a dataset or passed mean and variance.

During adapt(), the layer will compute a mean and variance separately for each position in each axis specified by the axis argument. To calculate a single mean and variance over the input data, simply pass axis=None to the layer.

Arg
data The data to train on. It can be passed as a NumPy array, a backend-native eager tensor, a tf.data.Dataset, a keras.utils.PyDataset, or an iterable of batches (e.g. a list of arrays or a generator yielding batches). If a dataset or iterable, it must be batched. Keras will assume that each element is a batch, and if that assumption doesn't hold, the mean and variance may be incorrectly computed.

convert_weight

View source

Convert the weight if it is from the a different backend.

finalize_state

View source

from_config

View source

Creates an operation from its config.

This method is the reverse of get_config, capable of instantiating the same operation from the config dictionary.

if "dtype" in config and isinstance(config["dtype"], dict):
    policy = dtype_policies.deserialize(config["dtype"])

Args
config A Python dictionary, typically the output of get_config.

Returns
An operation instance.