tf.keras.layers.Normalization
Слой предобработки, который нормализует непрерывные признаки.
Наследуется от: Layer, Operation
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 или как тензор в формате бэкенда. Если набор данных, то он должен быть пакетным. 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