Spec-Zone.ru › TensorFlow 2.9

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 был разработан для TensorFlow v1. Продолжайте чтение для получения подробной информации о том, как перейти с этого API на эквивалентный в TensorFlow v2. Обратитесь к руководству по миграции с TensorFlow v1 на TensorFlow v2 для получения инструкций по миграции остальной части вашего кода.

Этот 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

Spec-Zone.ru

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