tf.keras.layers.Normalization
Слой предобработки, нормализующий непрерывные признаки.
tf.keras.layers.Normalization(
axis=-1, mean=None, variance=None, invert=False, **kwargs
)
Используется в ноутбуках
| Используется в руководстве | Используется в обучающих материалах |
|---|---|
Этот слой сдвигает и масштабирует входные данные, приводя их к распределению со средним значением 0 и стандартным отклонением 1. Для этого он заранее вычисляет среднее значение и дисперсию данных, а во время выполнения вызывает (input - mean) / sqrt(var).
Значения среднего и дисперсии для слоя необходимо либо указать при его создании, либо получить с помощью adapt(). adapt() вычислит среднее значение и дисперсию данных и сохранит их в весах слоя. adapt() следует вызывать до fit(), evaluate() или predict().
| Аргументы | |
|---|---|
axis | Целое число, кортеж целых чисел или None. Ось или оси, для каждого индекса которых в форме следует вычислять отдельное среднее значение и дисперсию. Например, если форма равна (None, 5) и axis=1, слой будет отслеживать 5 отдельных значений среднего и дисперсии для последней оси. Если axis задано как None, слой нормализует все элементы входных данных с помощью скалярных значений среднего и дисперсии. Если задано -1, последняя ось входных данных считается размерностью признаков и нормализуется по каждому индексу. Обратите внимание: в частном случае скалярных входных данных с пакетами, когда единственная ось — это ось пакета, по умолчанию каждый индекс пакета нормализуется отдельно. В этом случае рассмотрите возможность передачи axis=None. По умолчанию — -1. |
mean | Значение(я) среднего, используемое(ые) при нормализации. Переданное(ые) значение(я) будет(ут) транслировано(ы) до формы сохраняемых выше осей; если трансляция невозможна, при вызове метода build() этого слоя возникнет ошибка. |
variance | Значение(я) дисперсии, используемое(ые) при нормализации. Переданное(ые) значение(я) будет(ут) транслировано(ы) до формы сохраняемых выше осей; если трансляция невозможна, при вызове метода build() этого слоя возникнет ошибка. |
invert | Если True, слой применит к входным данным обратное преобразование: нормализованные входные данные будут преобразованы обратно в исходную форму. |
Примеры:
Вычисление общего среднего значения и дисперсии путем анализа набора данных в 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)
Вычисление среднего значения и дисперсии для каждого индекса последней оси.
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)Передача среднего значения и дисперсии напрямую.
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)Использование слоя для обратной нормализации входных данных (после адаптации слоя).
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 | Получает входной(ые) тензор(ы) символьной операции. Возвращает только тензор(ы), соответствующий(ие) первому вызову операции. |
output | Получает выходной(ые) тензор(ы) слоя. Возвращает только тензор(ы), соответствующий(ие) первому вызову операции. |
Методы
adapt
adapt(
data
)
Вычисляет среднее значение и дисперсию значений в наборе данных.
Вызов adapt() для слоя Normalization — это альтернатива передаче аргументов mean и variance при создании слоя. Слой Normalization всегда должен либо адаптироваться на наборе данных, либо получать mean и variance.
Во время adapt() слой вычисляет mean и variance отдельно для каждой позиции каждой оси, указанной в аргументе axis. Чтобы вычислить единые mean и variance для входных данных, просто передайте слою axis=None.
| Аргумент | |
|---|---|
data | Данные для обучения. Их можно передать как tf.data.Dataset, массив NumPy или тензор бэкенда в eager-режиме. Если передан набор данных, он должен быть разбит на пакеты. Keras предполагает, что данные разбиты на пакеты; если это не так, среднее значение и дисперсия могут быть вычислены неправильно. |
finalize_state
finalize_state()
from_config
@classmethod
from_config(
config
)
Создает слой на основе его конфигурации.
Этот метод является обратным по отношению к get_config и позволяет создать такой же слой из словаря конфигурации. Он не обрабатывает связи между слоями (это делает Network) и веса (это делает set_weights).
| Аргументы | |
|---|---|
config | Словарь Python, обычно являющийся результатом get_config. |
| Возвращает | |
|---|---|
| Экземпляр слоя. |
symbolic_call
symbolic_call(
*args, **kwargs
)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/layers/Normalization