Spec-Zone.ru › TensorFlow 2.3

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

Spec-Zone.ru

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