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 |
ДЕПРЕКАТИРОВАННАЯ ФУНКЦИЯ |
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