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, renorm=False, renorm_clipping=None, renorm_momentum=0.99,
trainable=True, adjustment=None, name=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 | Необязательное ограничение для веса гамма. |
renorm | Использовать Batch Renormalization. Это добавляет дополнительные переменные во время обучения. Вычисление во время инференса одинаково для любого значения этого параметра. |
renorm_clipping | Словарь, который может сопоставлять ключи 'rmax', 'rmin', 'dmax' с скалярными Tensors для ограничения коррекции renorm. Коррекция (r, d) используется как corrected_value = normalized_value * r + d, с r ограниченным до [rmin, rmax], а d до [-dmax, dmax]. Пропущенные rmax, rmin, dmax устанавливаются соответственно к inf, 0, inf. |
renorm_momentum | Момент, используемый для обновления скользящих средних и стандартных отклонений с renorm. В отличие от momentum, это влияет на обучение и не должно быть слишком маленьким (что добавит шум) или слишком большим (что даст устаревшие оценки). Обратите внимание, что momentum по-прежнему применяется для получения средних и дисперсий для инференса. |
trainable | Булево значение, если True переменные будут помечены как обученные. |
Аргументы вызова:
-
inputs: Входной тензор (любого ранга). -
training: Булево значение Python, указывающее, должен ли слой вести себя в режиме обучения или в режиме инференса.-
training=True: Слой будет нормализовать свои входные данные, используя среднее и дисперсию текущей партии входных данных. -
training=False: Слой будет нормализовать свои входные данные, используя среднее и дисперсию своих скользящих статистических данных, вычисленных во время обучения.
-
Форма входных данных:
Произвольная. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включая ось образцов) при использовании этого слоя в качестве первого слоя в модели.
Форма выходных данных:
Такая же, как у входных данных.
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/keras/layers/experimental/SyncBatchNormalization