Spec-Zone.ru › TensorFlow 2.4

tf.keras.layers.experimental.SyncBatchNormalization

Синхронно нормализует и масштабирует входные данные или активации по репликам.

Наследуется от: Layer, Module

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API