tf.keras.layers.experimental.SyncBatchNormalization
Синхронное нормализация и масштабирование входных данных или активаций.
tf.keras.layers.experimental.SyncBatchNormalization(
axis=-1,
momentum=0.99,
epsilon=0.001,
center=True,
scale=True,
beta_initializer='zeros',
gamma_initializer='ones',
moving_mean_initializer='zeros',
moving_variance_initializer='ones',
beta_regularizer=None,
gamma_regularizer=None,
beta_constraint=None,
gamma_constraint=None,
**kwargs
)
Применяет пакетную нормализацию к активациям предыдущего слоя в каждом пакете, синхронизируя глобальные статистические данные по всем устройствам, которые обучают модель. Для получения подробной информации о пакетной нормализации см. документацию по слою tf.keras.layers.BatchNormalization.
Если этот слой используется при использовании стратегии tf.distribute для обучения моделей на нескольких устройствах/рабочих узлах, будет вызвана функция allreduce для агрегирования статистических данных о партиях на всех репликах на каждом шаге обучения. Без стратегии tf.distribute этот слой ведет себя как обычный слой tf.keras.layers.BatchNormalization.
Пример использования:
strategy = tf.distribute.MirroredStrategy() with strategy.scope(): model = tf.keras.Sequential() model.add(tf.keras.layers.Dense(16)) model.add(tf.keras.layers.experimental.SyncBatchNormalization())
| Аргументы | |
|---|---|
axis | Целое число, ось, которая должна быть нормализована (обычно ось признаков). Например, после слоя Conv2D со слоем data_format="channels_first", установите axis=1 в BatchNormalization. |
momentum | Момент для скользящего среднего. |
epsilon | Малое число, добавляемое к дисперсии для предотвращения деления на ноль. |
center | Если True, добавьте смещение beta к нормализованному тензору. Если False, beta игнорируется. |
scale | Если True, умножить на gamma. Если False, gamma не используется. Если следующий слой линейный (например, nn.relu), это можно отключить, так как масштабирование будет выполнено следующим слоем. |
beta_initializer | Инициализатор для весов бета. |
gamma_initializer | Инициализатор для весов гамма. |
moving_mean_initializer | Инициализатор для скользящего среднего. |
moving_variance_initializer | Инициализатор для скользящей дисперсии. |
beta_regularizer | Необязательный регуляризатор для весов бета. |
gamma_regularizer | Необязательный регуляризатор для весов гамма. |
beta_constraint | Необязательное ограничение для весов бета. |
gamma_constraint | Необязательное ограничение для весов гамма. |
Аргументы вызова:
-
inputs: Входной тензор (любого ранга). -
training: Булево значение Python, указывающее, должен ли слой работать в режиме обучения или в режиме вывода.-
training=True: Слой будет нормализовать свои входные данные, используя среднее значение и дисперсию текущей партии входных данных. -
training=False: Слой будет нормализовать свои входные данные, используя среднее значение и дисперсию своих скользящих статистических данных, полученных во время обучения.
-
Форма входных данных:
Произвольная. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включая ось образцов), при использовании этого слоя в качестве первого слоя в модели.
Форма выходных данных:
Такая же форма, как и входные данные.
© 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/experimental/SyncBatchNormalization