РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
223 of 824 menu

Класс GroupNormalization

Класс GroupNormalization выполняет нормализацию входных данных, разбивая каналы на заданное число групп. В отличие от BatchNormalization, групповая нормализация не зависит от размера батча, что делает ее удобной для задач с небольшими батчами. Первым параметром передается число групп groups, вторым - параметр axis, определяющий ось каналов. Третьим параметром можно передать epsilon для численной стабильности.

Синтаксис

tf.keras.layers.GroupNormalization( groups=32, axis=-1, epsilon=0.001, center=True, scale=True, beta_initializer="zeros", gamma_initializer="ones" )

Пример

Давайте создадим слой групповой нормализации с 2 группами и применим его к тензору:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.GroupNormalization(groups=2) t = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]], dtype=tf.float32) res = layer(t) print(res)

Результат выполнения кода:

tf.Tensor( [[-1.3416407 -0.4472136 0.4472136 1.3416407] [-1.3416407 -0.4472136 0.4472136 1.3416407]], shape=(2, 4), dtype=float32)

Пример

Давайте применим слой к четырехмерному тензору, имитирующему выход сверточного слоя:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.GroupNormalization(groups=2, axis=-1) t = tf.constant([ [[[1, 2, 3, 4], [5, 6, 7, 8]]], [[[9, 10, 11, 12], [13, 14, 15, 16]]] ], dtype=tf.float32) res = layer(t) print(res)

Результат выполнения кода:

tf.Tensor( [[[[-1.3416407 -0.4472136 0.4472136 1.3416407] [-1.3416407 -0.4472136 0.4472136 1.3416407]]] [[[-1.3416407 -0.4472136 0.4472136 1.3416407] [-1.3416407 -0.4472136 0.4472136 1.3416407]]]], shape=(2, 1, 2, 4), dtype=float32)

Пример

Давайте встроим слой групповой нормализации в модель и выполним прямой проход:

<+python+> import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(4, input_shape=(4,)), tf.keras.layers.GroupNormalization(groups=2), tf.keras.layers.Dense(2) ]) t = tf.constant([[1, 2, 3, 4]], dtype=tf.float32) res = model(t) print(res) <-python+>

Результат выполнения кода:

tf.Tensor([[-0.7012032 1.0566323]], shape=(1, 2), dtype=float32)

Смотрите также

  • класс BatchNormalization,
    который выполняет нормализацию по батчу
  • класс LayerNormalization,
    который выполняет нормализацию по слою
  • класс UnitNormalization,
    который выполняет нормализацию векторов
  • класс Dense,
    который создает полносвязный слой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить