Spec-Zone.ru › TensorFlow 2.4

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.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,
    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
)
Примечание: при обучении необходимо обновлять 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 Использовать ли Batch Renormalization (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 Целое число. По умолчанию virtual_batch_size это None, что означает, что пакетная нормализация выполняется по всему пакету. Когда virtual_batch_size не None, вместо этого выполняется "Ghost Batch Normalization", которая создает виртуальные подпакеты, которые каждый нормализуются отдельно (с общими 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.
Возвращает
Выходной тензор.
Исключения
ValueError если включено жадное выполнение.

Ссылки:

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

© 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.4/api_docs/python/tf/compat/v1/layers/batch_normalization

Spec-Zone.ru

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