tf.keras.layers.BatchNormalization
| Просмотреть исходный код на GitHub |
Базовый класс слоя пакетной нормализации (Ioffe и Szegedy, 2014).
tf.keras.layers.BatchNormalization(
axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True,
beta_initializer='zeros', gamma_initializer='ones',
moving_mean_initializer='zeros', moving_variance_initializer='ones',
beta_regularizer=None, gamma_regularizer=None, beta_constraint=None,
gamma_constraint=None, renorm=False, renorm_clipping=None, renorm_momentum=0.99,
fused=None, trainable=True, virtual_batch_size=None, adjustment=None, name=None,
**kwargs
)
Нормализует активации предыдущего слоя в каждом пакете, т.е. применяет преобразование, которое поддерживает среднее значение активации близким к 0, а стандартное отклонение активации близким к 1.
| Аргументы | |
|---|---|
axis | Целое число, ось, которая должна быть нормализована (обычно ось признаков). Например, после слоя Conv2D со значением 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. |
gamma_constraint | Необязательное ограничение для веса gamma. |
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 | если True, использовать более быструю, объединённую реализацию, или поднять ValueError, если объединённая реализация не может быть использована. Если None, использовать более быструю реализацию, если это возможно. Если False, не использовать объединённую реализацию. |
trainable | Булево значение, если True переменные будут помечены как обученные. |
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. |
Аргументы вызова:
-
inputs: Входной тензор (любого ранга). -
training: Булево значение Python, указывающее, должен ли слой вести себя в режиме обучения или в режиме вывода.-
training=True: Слой будет нормализовать свои входные данные, используя среднее и дисперсию текущего пакета входных данных. -
training=False: Слой будет нормализовать свои входные данные, используя среднее и дисперсию своих скользящих статистик, вычисленных во время обучения.
-
Форма входных данных:
Произвольная. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включая ось образцов) при использовании этого слоя в качестве первого слоя в модели.
Форма выходных данных:
Форма такая же, как у входных данных.
Ссылки:
{ {ПРИМЕЧАНИЕ_АТРИБУТА_НАСТРОЙКИ} }
© 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/keras/layers/BatchNormalization