Класс 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)
Пример
Давайте встроим слой групповой нормализации в модель и выполним прямой проход:
Результат выполнения кода:
tf.Tensor([[-0.7012032 1.0566323]], shape=(1, 2), dtype=float32)
Смотрите также
-
класс
BatchNormalization,
который выполняет нормализацию по батчу -
класс
LayerNormalization,
который выполняет нормализацию по слою -
класс
UnitNormalization,
который выполняет нормализацию векторов -
класс
Dense,
который создает полносвязный слой