Spec-Zone.ru › TensorFlow 1.15

tf.compat.v2.keras.layers.BatchNormalization

Базовый класс слоя пакетной нормализации (Ioffe и Szegedy, 2014).

tf.compat.v2.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 Функция int. По умолчанию 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 (кортеж целых чисел, не включая ось примеров) при использовании этого слоя в качестве первого слоя в модели.

Форма выходных данных:

Такая же форма, как у входных данных.

Ссылки:

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

{ {TRAINABLE_ATTRIBUTE_NOTE} }

© 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/compat/v2/keras/layers/BatchNormalization

Spec-Zone.ru

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