tf.keras.layers.Normalization
Слой предобработки, который нормализует непрерывные признаки.
Наследуется от: PreprocessingLayer, Layer, Module
tf.keras.layers.Normalization(
axis=-1, mean=None, variance=None, **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 . |
mean | Значение среднего (значения) для использования во время нормализации. Переданное значение (значения) будет транслироваться в форму сохраняемых осей выше; если значение (значения) нельзя транслировать, при вызове метода build() этого слоя будет выведено сообщение об ошибке. |
variance | Значение дисперсии (значения) для использования во время нормализации. Переданное значение (значения) будет транслироваться в форму сохраняемых осей выше; если значение (значения) нельзя транслировать, при вызове метода build() этого слоя будет выведено сообщение об ошибке. |
Примеры:
Вычисление глобального среднего и дисперсии путем анализа набора данных в adapt().
adapt_data = np.array([1., 2., 3., 4., 5.], dtype='float32') input_data = np.array([1., 2., 3.], dtype='float32') layer = tf.keras.layers.Normalization(axis=None) layer.adapt(adapt_data) layer(input_data) <tf.Tensor: shape=(3,), dtype=float32, numpy= 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 = tf.keras.layers.Normalization(axis=-1)
layer.adapt(adapt_data)
layer(input_data)
<tf.Tensor: shape=(1, 3), dtype=float32, numpy=
array([-1., -1., -1.], dtype=float32)>
Непосредственное задание среднего и дисперсии.
input_data = np.array([[1.], [2.], [3.]], dtype='float32')
layer = tf.keras.layers.Normalization(mean=3., variance=2.)
layer(input_data)
<tf.Tensor: shape=(3, 1), dtype=float32, numpy=
array([[-1.4142135 ],
[-0.70710677],
[ 0. ]], dtype=float32)>
| Атрибуты | |
|---|---|
is_adapted | Признак того, что слой уже был адаптирован к данным. |
Методы
adapt
adapt(
data, batch_size=None, steps=None
)
Вычисляет среднее и дисперсию значений в наборе данных.
Вызов adapt() на слое Normalization является альтернативой передаче mean и variance аргументов во время создания слоя. Слой Normalization всегда должен быть адаптирован к набору данных или принимать mean и variance.
Во время adapt(), слой вычислит среднее значение и дисперсию отдельно для каждой позиции на каждой оси, указанной аргументом axis. Для вычисления единого среднего значения и дисперсии по входным данным достаточно передать axis=None.
Для повышения эффективности Normalization в любом контексте распределения вычисленные среднее и дисперсия сохраняются неизменными относительно любых скомпилированных tf.Graph, которые вызывают слой. Вследствие этого, если слой адаптируется во второй раз, любые модели, использующие этот слой, должны быть перекомпилированы. Для получения дополнительной информации см. tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt.
adapt() предназначен только для использования на одной машине для вычисления состояния слоя. Для анализа набора данных, который не помещается на одной машине, см. Tensorflow Transform для многомашинного решения map-reduce.
| Аргументы | |
|---|---|
data | Данные для обучения. Можно передать либо в виде tf.data.Dataset, либо в виде массива NumPy. |
batch_size | Целое число или None. Количество образцов на обновление состояния. Если не указано, batch_size по умолчанию равно 32. Не указывайте batch_size если ваши данные представлены в виде наборов данных, генераторов или экземпляров keras.utils.Sequence (так как они генерируют пакеты). |
steps | Целое число или None. Общее количество шагов (пакетов образцов). При обучении с входными тензорами, такими как тензоры данных TensorFlow, значение None по умолчанию равно количеству образцов в вашем наборе данных, деленному на размер пакета, или 1, если это определить невозможно. Если x — набор данных tf.data, и 'steps' равно None, эпоха будет выполняться до тех пор, пока набор данных на входе не будет исчерпан. При передаче бесконечно повторяющегося набора данных необходимо указать аргумент steps . Этот аргумент не поддерживается для входных массивов. |
compile
compile(
run_eagerly=None, steps_per_execution=None
)
Конфигурирует слой для adapt.
| Аргументы | |
|---|---|
run_eagerly | Булево значение. По умолчанию False. Если True, логика этого Model не будет обернута в tf.function. Рекомендуется оставить это как None, если ваша Model не может выполняться внутри tf.function. steps_per_execution: Целое число. По умолчанию 1. Количество пакетов, выполняемых во время каждого вызова tf.function. Выполнение нескольких пакетов внутри одного вызова tf.function может значительно улучшить производительность на TPUs или небольших моделях с большой Python-накладной. |
reset_state
reset_state()
Сбрасывает статистику слоя предобработки.
update_state
update_state(
data
)
Накапливает статистику для слоя предобработки.
| Аргументы | |
|---|---|
data | Мини-пакет входных данных для слоя. |
© 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/versions/r2.9/api_docs/python/tf/keras/layers/Normalization