View source on GitHub |
A preprocessing layer that normalizes continuous features.
Inherits From: Layer
, Operation
tf.keras.layers.Normalization(
axis=-1, mean=None, variance=None, invert=False, **kwargs
)
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()
.
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)
Methods
adapt
adapt(
data
)
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 either as a
tf.data.Dataset , as a NumPy array, or as a backend-native
eager tensor.
If a dataset, it must be batched. Keras will assume that the
data is batched, and if that assumption doesn't hold, the mean
and variance may be incorrectly computed.
|
finalize_state
finalize_state()
from_config
@classmethod
from_config( config )
Creates a layer from its config.
This method is the reverse of get_config
,
capable of instantiating the same layer from the config
dictionary. It does not handle layer connectivity
(handled by Network), nor weights (handled by set_weights
).
Args | |
---|---|
config
|
A Python dictionary, typically the output of get_config. |
Returns | |
---|---|
A layer instance. |
symbolic_call
symbolic_call(
*args, **kwargs
)