Spec-Zone.ru › TensorFlow 2.3

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
)
Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: используйте keras.layers.BatchNormalization вместо нее. В частности, tf.control_dependencies(tf.GraphKeys.UPDATE_OPS) не следует использовать (см. документацию tf.keras.layers.BatchNormalization).
Примечание: при обучении необходимо обновить 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 (например, placeholder). Возвращать ли выходной результат в режиме обучения (нормализованный с использованием статистики текущей порции) или в режиме вывода (нормализованный с использованием скользящих статистик). ПРИМЕЧАНИЕ: убедитесь, что этот параметр задан правильно, иначе обучение/вывод не будут работать должным образом.
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 Ось. По умолчанию virtual_batch_size это None, что означает, что пакетная нормализация выполняется по всей порции. Когда virtual_batch_size не является None, выполняется "Ghost Batch Normalization", создаются виртуальные подпорции, которые нормализуются по отдельности (с общими gamma, beta и скользящими статистиками). Необходимо разделить фактический размер порции во время выполнения.
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.

Ссылки:

Пакетная нормализация - Ускорение обучения глубоких сетей за счёт уменьшения внутренних смещений ковариации: Ioffe et al., 2015 (pdf) Пакетная ренормализация - По направлению к уменьшению зависимости от размера порции в нормализованных по порциям моделях: 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.3/api_docs/python/tf/compat/v1/layers/batch_normalization

Spec-Zone.ru

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