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

Класс BatchNormalization

Класс BatchNormalization выполняет нормализацию активаций предыдущего слоя по каждому мини-батчу. Это стабилизирует обучение и позволяет использовать более высокие скорости обучения. Слой принимает входные данные и возвращает нормализованные значения. Первым параметром можно передать функцию активации, вторым - момент для скользящего среднего, третьим - параметр epsilon для численной стабильности.

Синтаксис

tf.keras.layers.BatchNormalization( axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True )

Пример

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

import tensorflow as tf layer = tf.keras.layers.BatchNormalization() t = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]) res = layer(t, training=True) print(res)

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

tf.Tensor( [[-1.2247449 -1.2247449] [ 0. 0. ] [ 1.2247449 1.2247449]], shape=(3, 2), dtype=float32)

Пример

Давайте используем слой в модели с указанием функции активации relu:

<+python+> import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(4, input_shape=(3,)), tf.keras.layers.BatchNormalization(), tf.keras.layers.Activation('relu') ]) t = tf.constant([[1.0, 2.0, 3.0]]) res = model(t, training=True) print(res) <-python+>

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

tf.Tensor( [[0. 0.29474723 0. 0. ]], shape=(1, 4), dtype=float32)

Пример

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

import tensorflow as tf layer = tf.keras.layers.BatchNormalization() t = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]) _ = layer(t, training=True) print(layer.moving_mean) print(layer.moving_variance)

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

<tf.Variable 'moving_mean:0' shape=(2,) dtype=float32, numpy=array([0.06, 0.08], dtype=float32)> <tf.Variable 'moving_variance:0' shape=(2,) dtype=float32, numpy=array([0.9404, 0.9608], dtype=float32)>

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

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