Spec-Zone.ru › TensorFlow

tf.keras.layers.LayerNormalization

Слой нормализации по слоям (Ba et al., 2016).

Наследует от: Layer, Operation

tf.keras.layers.LayerNormalization(
    axis=-1,
    epsilon=0.001,
    center=True,
    scale=True,
    rms_scaling=False,
    beta_initializer='zeros',
    gamma_initializer='ones',
    beta_regularizer=None,
    gamma_regularizer=None,
    beta_constraint=None,
    gamma_constraint=None,
    **kwargs
)

Используется в блокнотах

Используется в руководствах
  • Подпись изображений с визуальным вниманием
  • Перевод машинного языка с помощью Transformer и Keras
  • Перевод машинного языка с вниманием

Нормализует активации предыдущего слоя для каждого примера в пакетe независимо, а не по всему пакету, как Batch Normalization. То есть, применяет преобразование, которое поддерживает среднее значение активации внутри каждого примера близким к 0, а стандартное отклонение активации — близким к 1.

Если scale или center включены, слой будет масштабировать нормализованные выходы, транслируя их с помощью обучаемого параметра gamma, и центрировать выходы, транслируя с помощью обучаемого параметра beta. gamma по умолчанию будет тензором из единиц, а beta — тензором из нулей, так что центрирование и масштабирование не будут работать до начала обучения.

Таким образом, при включённом масштабировании и центрировании уравнения нормализации следующие:

Пусть промежуточные активации для мини-пакета — это inputs.

Для каждого примера x_i в inputs с k признаками мы вычисляем среднее значение и дисперсию примера:

mean_i = sum(x_i[j] for j in range(k)) / k
var_i = sum((x_i[j] - mean_i) ** 2 for j in range(k)) / k

а затем вычисляем нормализованное значение x_i_normalized, включая небольшой фактор epsilon для обеспечения числовой устойчивости.

x_i_normalized = (x_i - mean_i) / sqrt(var_i + epsilon)

И, наконец, x_i_normalized линейно преобразуется с помощью gamma и beta, которые являются обучаемыми параметрами:

output_i = x_i_normalized * gamma + beta

gamma и beta будут охватывать оси inputs, указанные в axis, и эта часть формы входных данных должна быть полностью определена.

Например:

layer = keras.layers.LayerNormalization(axis=[1, 2, 3])
layer.build([5, 20, 30, 40])
print(layer.beta.shape)
(20, 30, 40)
print(layer.gamma.shape)
(20, 30, 40)

Обратите внимание, что другие реализации нормализации по слоям могут выбрать определение gamma и beta по отдельному набору осей, отличных от осей, по которым производится нормализация. Например, групповая нормализация (Wu et al. 2018) с размером группы 1 соответствует нормализации по слоям, которая нормализует по высоте, ширине и каналу и имеет gamma и beta, охватывающие только размер канала. Таким образом, эта реализация слоя нормализации по слоям не будет соответствовать слою групповой нормализации с размером группы, установленным в 1.

Аргументы
axis Целое число или список/кортеж. Ось или оси, по которым производится нормализация. Обычно это ось/оси признаков. Оставшиеся оси обычно являются осями пакета. -1 — это последняя размерность на входе. По умолчанию — -1.
epsilon Малое число, добавляемое к дисперсии, чтобы избежать деления на ноль. По умолчанию — 1e-3.
center Если True, добавляет смещение beta к нормализованному тензору. Если False, beta игнорируется. По умолчанию — True.
scale Если True, умножает на gamma. Если False, gamma не используется. Когда следующий слой линейный (например, nn.relu), это можно отключить, так как масштабирование будет выполнено следующим слоем. По умолчанию — True.
rms_scaling Если True, center и scale игнорируются, а входы масштабируются с помощью gamma и обратной квадратного корня из квадрата всех входов. Это приближённый и более быстрый подход, который никогда не вычисляет среднее значение входных данных.
beta_initializer Инициализатор для веса beta. По умолчанию — нули.
gamma_initializer Инициализатор для веса gamma. По умолчанию — единицы.
beta_regularizer Необязательный регуляризатор для веса beta. По умолчанию — None.
gamma_regularizer Необязательный регуляризатор для веса gamma. По умолчанию — None.
beta_constraint Необязательное ограничение для веса beta. По умолчанию — None.
gamma_constraint Необязательное ограничение для веса gamma. По умолчанию — None.
**kwargs Параметры базового слоя (например, name и dtype).

Ссылка:

  • Lei Ba et al., 2016.
Атрибуты
input Получает тензор(ы) ввода символической операции.

Возвращает только тензор(ы), соответствующие первому вызову операции.

output Получает тензор(ы) вывода слоя.

Возвращает только тензор(ы), соответствующие первому вызову операции.

Методы

from_config

Просмотреть исходный код

@classmethod
from_config(
    config
)

Создаёт слой из его конфигурации.

Этот метод — обратный к методу get_config, способный создать тот же самый слой из словаря конфигурации. Он не обрабатывает соединение слоёв (это обрабатывает сеть), а также веса (это обрабатывает set_weights).

Аргументы
config Словарь Python, обычно результат get_config.
Возвращает
Экземпляр слоя.

symbolic_call

Просмотреть исходный код

symbolic_call(
    *args, **kwargs
)

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/layers/LayerNormalization

Spec-Zone.ru

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