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 | Инициализатор для веса beta. |
gamma_initializer | Инициализатор для веса gamma. |
moving_mean_initializer | Инициализатор для скользящего среднего. |
moving_variance_initializer | Инициализатор для скользящей дисперсии. |
beta_regularizer | Необязательный регуляризатор для веса beta. |
gamma_regularizer | Необязательный регуляризатор для веса gamma. |
beta_constraint | Необязательное ограничение для веса beta. |
gamma_constraint | Необязательное ограничение для веса gamma. |
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.4/api_docs/python/tf/keras/layers/experimental/SyncBatchNormalization