Spec-Zone.ru › TensorFlow 1.15

tf.layers.batch_normalization

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

Просмотр псевдонимов

Псевдонимы совместимости для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.layers.batch_normalization

tf.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.batch_normalization).

Ссылка: http://arxiv.org/abs/1502.03167

"Пакетная нормализация: ускорение обучения глубоких сетей путем уменьшения внутренних ковариационных сдвигов"

Сергей Иоффе, Кристиан Шзегеди

Примечание: во время обучения необходимо обновлять 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 Используется ли пакетная ренормализация (https://arxiv.org/abs/1702.03275). Это добавляет дополнительные переменные во время обучения. Вывод одинаковый для любого значения этого параметра.
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 если включено выполнение Eager.

© 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/r1.15/api_docs/python/tf/layers/batch_normalization

Spec-Zone.ru

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