tf.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
)
Ссылка: 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