Spec-Zone.ru › TensorFlow 2.3

tf.compat.v1.layers.BatchNormalization

Слой пакетной нормализации из (Ioffe et al., 2015).

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

tf.compat.v1.layers.BatchNormalization(
    axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True,
    beta_initializer=tf.zeros_initializer(),
    gamma_initializer=tf.ones_initializer(),
    moving_mean_initializer=tf.zeros_initializer(),
    moving_variance_initializer=tf.ones_initializer(), beta_regularizer=None,
    gamma_regularizer=None, beta_constraint=None, gamma_constraint=None,
    renorm=False, renorm_clipping=None, renorm_momentum=0.99, fused=None,
    trainable=True, virtual_batch_size=None, adjustment=None, name=None, **kwargs
)

API Keras обрабатывает обновления BatchNormalization для moving_mean и moving_variance как часть своих циклов fit() и evaluate(). Однако, если используется пользовательский цикл обучения с экземпляром Model, эти обновления необходимо явно включить. Вот простой пример того, как это можно сделать:

# model is an instance of Model that contains BatchNormalization layer.
update_ops = model.get_updates_for(None) + model.get_updates_for(features)
train_op = optimizer.minimize(loss)
train_op = tf.group([train_op, update_ops])
Аргументы
axis Один int или список int, ось или оси, которые должны быть нормализованы, обычно ось/оси признаков. Например, после слоя Conv2D со значением data_format="channels_first", установите axis=1. Если предоставлен список осей, каждая ось в axis будет нормализована одновременно. По умолчанию -1, что использует последнюю ось. Примечание: при использовании многоосевой пакетной нормализации переменные beta, gamma, moving_mean, и moving_variance имеют тот же ранг, что и тензор входных данных, с размером размерности 1 во всех уменьшенных (не-осевых) измерениях.
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 после обновления Optimizer (например, используется для реализации ограничений нормы или ограничений значений для весов слоя). Функция должна принимать в качестве входных данных непроектированную переменную и возвращать спроектированную переменную (которая должна иметь ту же форму). Ограничения небезопасны при асинхронном распределённом обучении.
gamma_constraint Необязательная проекционная функция, применяемая к весу gamma после обновления Optimizer.
renorm Использовать ли пакетную перенормировку (Ioffe, 2017). Это добавляет дополнительные переменные во время обучения. Вывод одинаков для любого значения этого параметра.
renorm_clipping Словарь, который может сопоставлять ключи 'rmax', 'rmin', 'dmax' со скалярными Tensors для ограничения коррекции перенормировки. Коррекция (r, d) используется как corrected_value = normalized_value * r + d, с r ограничена [rmin, rmax], а d - [-dmax, dmax]. Отсутствующие rmax, rmin, dmax устанавливаются соответственно в inf, 0, inf.
renorm_momentum Импульс, используемый для обновления скользящих средних и стандартных отклонений с перенормировкой. В отличие от momentum, это влияет на обучение и не должно быть слишком малым (что добавит шум), ни слишком большим (что даст устаревшие оценки). Обратите внимание, что momentum всё ещё применяется для получения средних и дисперсий для вывода.
fused Если None или True, использовать более быструю объединённую реализацию, если возможно. Если False, использовать системно рекомендуемую реализацию.
trainable Булево, если True также добавить переменные в коллекцию графов GraphKeys.TRAINABLE_VARIABLES (см. tf.Variable).
virtual_batch_size Функция int. По умолчанию virtual_batch_size равно None, что означает, что пакетная нормализация выполняется по всему пакету. Когда virtual_batch_size не равно None, вместо этого выполняется "призрачная пакетная нормализация", которая создаёт виртуальные подпакеты, которые нормализуются по отдельности (с общими gamma, beta и статистикой скользящей средней). Необходимо разделить фактический размер пакета во время выполнения.
adjustment Функция, принимающая Tensor, содержащую (динамическую) форму тензора входных данных, и возвращающая пару (масштаб, смещение) для применения к нормализованным значениям (до gamma и beta), только во время обучения. Например, если axis==-1, adjustment = lambda shape: ( tf.random.uniform(shape[-1:], 0.93, 1.07), tf.random.uniform(shape[-1:], -0.1, 0.1)) будет масштабировать нормализованное значение максимум на 7% вверх или вниз, затем сдвигать результат максимум на 0,1 (с независимым масштабированием и смещением для каждого признака, но общим для всех примеров), а затем применять gamma и/или beta. Если None, корректировка не применяется. Не может быть указано, если указан virtual_batch_size.
name Строка, имя слоя.

Справочные материалы:

Пакетная нормализация — ускорение обучения глубоких нейронных сетей путем сокращения внутренней ковариационной сдвига: Ioffe et al., 2015 (pdf) Пакетная перенормировка — к уменьшению зависимости от мини-пакета в моделях с пакетной нормализацией: Ioffe, 2017 (pdf)

Атрибуты
graph ДЕПРЕКАТИРОВАННАЯ ФУНКЦИЯ
Предупреждение: ЭТА ФУНКЦИЯ ДЕПРЕКАТИРОВАННАЯ. Она будет удалена в будущей версии. Инструкции по обновлению: прекратите использовать это свойство, так как слои tf.layers больше не отслеживают свой график.
scope_name

© 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/compat/v1/layers/BatchNormalization

Spec-Zone.ru

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