tf.compat.v1.layers.BatchNormalization
Слой пакетной нормализации из (Ioffe et al., 2015).
Наследуется от: BatchNormalization, Layer, Layer, Module
tf.compat.v1.layers.BatchNormalization(
axis=-1,
momentum=0.99,
epsilon=0.001,
center=True,
scale=True,
beta_initializer=tf.compat.v1.zeros_initializer(),
gamma_initializer=tf.compat.v1.ones_initializer(),
moving_mean_initializer=tf.compat.v1.zeros_initializer(),
moving_variance_initializer=tf.compat.v1.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
)
Переход к TF2
Этот API является устаревшим API, совместимым только с выполнением Eager и tf.function, если вы используете его совместно с tf.compat.v1.keras.utils.track_tf1_style_variables
Обратитесь к разделу сопоставления моделей tf.layers в руководстве по миграции, чтобы узнать, как использовать вашу модель TensorFlow v1 в TF2 с Keras.
Соответствующий слой TensorFlow v2 — tf.keras.layers.BatchNormalization.
Структурное отображение на родной TF2
Ни одно из поддерживаемых аргументов не изменило свое имя.
До:
bn = tf.compat.v1.layers.BatchNormalization()
После:
bn = tf.keras.layers.BatchNormalization()
Как сопоставить аргументы
| Имя аргумента TF1 | Имя аргумента TF2 | Примечание |
|---|---|---|
name | name | Базовый класс слоя |
trainable | trainable | Базовый класс слоя |
axis | axis | - |
momentum | momentum | - |
epsilon | epsilon | - |
center | center | - |
scale | scale | - |
beta_initializer | beta_initializer | - |
gamma_initializer | gamma_initializer | - |
moving_mean_initializer | moving_mean_initializer | - |
beta_regularizer | `beta_regularizer' | - |
gamma_regularizer | `gamma_regularizer' | - |
beta_constraint | `beta_constraint' | - |
gamma_constraint | `gamma_constraint' | - |
renorm | Не поддерживается | - |
renorm_clipping | Не поддерживается | - |
renorm_momentum | Не поддерживается | - |
fused | Не поддерживается | - |
virtual_batch_size | Не поддерживается | - |
adjustment | Не поддерживается | - |
Описание
Keras API обрабатывает обновления 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 | Численное значение или список чисел, ось или оси, которые должны быть нормализованы, как правило, ось/оси признаков. Например, после слоя 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 | Инициализатор для веса бета. |
gamma_initializer | Инициализатор для веса гамма. |
moving_mean_initializer | Инициализатор для скользящего среднего. |
moving_variance_initializer | Инициализатор для скользящей дисперсии. |
beta_regularizer | Необязательный регуляризатор для веса бета. |
gamma_regularizer | Необязательный регуляризатор для веса гамма. |
beta_constraint | Необязательная проекционная функция, которая применяется к весу beta после обновления с помощью Optimizer (например, используется для реализации ограничений норм или ограничений значений для весов слоев). Функция должна принимать в качестве входных данных непроектируемую переменную и должна возвращать спроецированную переменную (которая должна иметь такую же форму). Ограничения небезопасны при асинхронном распределенном обучении. |
gamma_constraint | Необязательная проекционная функция, которая применяется к весу gamma после обновления с помощью Optimizer. |
renorm | Использовать ли пакетную ренормализацию (Ioffe, 2017). Это добавляет дополнительные переменные во время обучения. Вывод одинаковый для любого значения этого параметра. |
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 по-прежнему используется для получения средних и дисперсий для вывода. |
fused | если None или True, использовать более быструю, объединенную реализацию, если это возможно. Если False, использовать рекомендуемую системой реализацию. |
trainable | Булево значение, если True также добавлять переменные в коллекцию графа GraphKeys.TRAINABLE_VARIABLES (см. tf.Variable). |
virtual_batch_size | Численное значение. По умолчанию virtual_batch_size — это None, что означает, что пакетная нормализация выполняется по всему пакету. Если virtual_batch_size не None, вместо этого выполняется "Ghost Batch Normalization", которая создает виртуальные подпакеты, которые нормализуются по отдельности (с общим гамма, бета и скользящими статистиками). Необходимо разделить фактический размер пакета во время выполнения. |
adjustment | Функция, принимающая Tensor, содержащую (динамическую) форму тензора входных данных, и возвращающая пару (масштаб, смещение) для применения к нормализованным значениям (до гамма и бета), только во время обучения. Например, если 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 (с независимым масштабированием и смещением для каждого признака, но общим для всех примеров), а затем применять гамма и/или бета. Если None, никакой корректировки не применяется. Не может быть указан, если указан virtual_batch_size. |
name | Строка, имя слоя. |
Ссылки:
Нормализация по набору - Ускорение обучения глубоких сетей за счёт уменьшения внутренней смещённости ковариации: Ioffe и др., 2015 (pdf) Батч-нормализация - На пути к уменьшению зависимости от мини-батчей в батч-нормализованных моделях: Ioffe, 2017 (pdf)
| Атрибуты | |
|---|---|
graph | |
scope_name | |
Методы
apply
apply(
*args, **kwargs
)
get_losses_for
get_losses_for(
inputs
)
Возвращает потери, относящиеся к определённому набору входных данных.
| Аргументы | |
|---|---|
inputs | Входной тензор или список/кортеж входных тензоров. |
| Возвращаемые значения | |
|---|---|
Список тензоров потерь слоя, которые зависят от inputs. |
get_updates_for
get_updates_for(
inputs
)
Возвращает обновления, относящиеся к определённому набору входных данных.
| Аргументы | |
|---|---|
inputs | Входной тензор или список/кортеж входных тензоров. |
| Возвращаемые значения | |
|---|---|
Список операций обновления слоя, которые зависят от inputs. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/compat/v1/layers/BatchNormalization