Класс LayerNormalization
Класс LayerNormalization применяет нормализацию к активациям
предыдущего слоя. В отличие от BatchNormalization,
нормализация происходит по последней оси тензора для каждого
примера отдельно, а не по батчу. Это делает слой удобным для
рекуррентных и трансформерных архитектур. Первым параметром
передается объект axis (по умолчанию -1) - ось
нормализации. Параметр epsilon задает малое число для
стабильности вычислений, center и scale отвечают
за обучаемые сдвиг и масштаб, а beta_initializer,
gamma_initializer и beta_regularizer,
gamma_regularizer управляют их инициализацией и
регуляризацией.
Синтаксис
tf.keras.layers.LayerNormalization(
axis=-1,
epsilon=0.001,
center=True,
scale=True,
beta_initializer="zeros",
gamma_initializer="ones",
beta_regularizer=None,
gamma_regularizer=None
)
Пример
Давайте создадим слой нормализации и применим его к двумерному тензору:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.LayerNormalization()
t = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[-1.2247449 0. 1.2247449]
[-1.2247449 0. 1.2247449]], shape=(2, 3), dtype=float32)
Пример
Давайте создадим слой с отключенным масштабом и сдвигом,
передав параметры center и scale:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.LayerNormalization(center=False, scale=False)
t = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([-1.4142135 -0.70710677 0. 0.70710677 1.4142135], shape=(5,), dtype=float32)
Пример
Давайте встроим слой LayerNormalization в модель
Keras и выполним прямой проход:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(4, activation="relu"),
tf.keras.layers.LayerNormalization(),
tf.keras.layers.Dense(2)
])
t = tf.constant([[1.0, 2.0, 3.0]])
res = model(t)
print(res)
Результат выполнения кода:
tf.Tensor([[-0.53208035 0.52563214]], shape=(1, 2), dtype=float32)
Смотрите также
-
класс
BatchNormalization,
который нормализует активации по батчу -
класс
GroupNormalization,
который нормализует активации по группам каналов -
класс
UnitNormalization,
который нормализует каждый вектор до единичной длины -
класс
Dense,
который создает полносвязный слой