Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.layers.batch_normalization

Функциональный интерфейс для слоя пакетной нормализации из работы Ioffe et al. (2015).

tf.compat.v1.layers.batch_normalization(
    inputs,
    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,
    training=False,
    trainable=True,
    name=None,
    reuse=None,
    renorm=False,
    renorm_clipping=None,
    renorm_momentum=0.99,
    fused=None,
    virtual_batch_size=None,
    adjustment=None
)

Переход на TF2

Внимание: Этот API был разработан для TensorFlow v1. Продолжайте чтение, чтобы узнать, как мигрировать с этого API на эквивалент в TensorFlow v2. Обратитесь к руководству по миграции TensorFlow v1 в TensorFlow v2 для инструкций по миграции остальной части вашего кода.

Этот API является устаревшим API, совместимым только с режимом eager execution и tf.function, если его использовать совместно с tf.compat.v1.keras.utils.track_tf1_style_variables

Обратитесь к разделу сопоставления моделей tf.layers в руководстве по миграции, чтобы узнать, как использовать вашу модель TensorFlow v1 в TF2 с Keras.

Соответствующий слой TensorFlow v2 — это tf.keras.layers.BatchNormalization.

Шаблон обновления пакетных данных с использованием tf.control_dependencies(tf.GraphKeys.UPDATE_OPS) не следует использовать в чистом TF2. Обратитесь к документации tf.keras.layers.BatchNormalization для получения дополнительной информации.

Структурное соответствие с родным TF2

Ни одно из поддерживаемых аргументов не изменило своё имя.

До:

x_norm = tf.compat.v1.layers.batch_normalization(x)

После:

Для миграции кода, использующего функциональные слои TF1, используйте Функциональный API Keras:

x = tf.keras.Input(shape=(28, 28, 1),)
y = tf.keras.layers.BatchNormalization()(x)
model = tf.keras.Model(x, y)

Как сопоставить аргументы

Имя аргумента 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 Не поддерживается -

Описание

Примечание: при обучении необходимо обновлять moving_mean и moving_variance. По умолчанию операции обновления добавляются в tf.GraphKeys.UPDATE_OPS, поэтому их необходимо выполнять вместе с train_op. Также, убедитесь, что все операции batch_normalization добавлены до получения коллекции update_ops. В противном случае update_ops будет пустой, и обучение/вывод не будут работать должным образом. Например:
x_norm = tf.compat.v1.layers.batch_normalization(x, training=training)

# ...

update_ops = tf.compat.v1.get_collection(tf.GraphKeys.UPDATE_OPS)
train_op = optimizer.minimize(loss)
train_op = tf.group([train_op, update_ops])
Аргументы
inputs Входной тензор.
axis Ось, которая должна быть нормализована (обычно ось признаков). Например, после слоя Convolution2D с параметром data_format="channels_first", установите axis=1 в BatchNormalization.
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.
training Булево значение (Python или тензор TensorFlow). Возвращать ли выходные данные в режиме обучения (нормализованные с использованием статистики текущей пакетной выборки) или в режиме вывода (нормализованные с использованием скользящих статистических данных). ПРИМЕЧАНИЕ: убедитесь, что этот параметр установлен правильно, иначе обучение/вывод не будут работать должным образом.
trainable Булево значение, если True также добавить переменные в коллекцию графа GraphKeys.TRAINABLE_VARIABLES (см. tf.Variable).
name Имя слоя.
reuse Булево значение, использовать ли повторное использование весов предыдущего слоя с тем же именем.
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, использовать систему рекомендованную реализацию.
virtual_batch_size Функция, принимающая int, содержащую (динамическую) форму входного тензора и возвращающую пару (scale, bias) для применения к нормализованным значениям (перед 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.
adjustment Функция, принимающая Tensor содержащую (динамическую) форму входного тензора и возвращающая пару (scale, bias) для применения к нормализованным значениям (перед 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.
Возвращает
Результирующий тензор.
Исключения
ValueError если режим eager execution включен.

Ссылки:

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

© 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/batch_normalization

Spec-Zone.ru

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