exponenta event banner

groupNormalizationLayer

Уровень нормализации группы

Описание

Уровень нормализации группы нормализует мини-пакет данных по сгруппированным подмножествам каналов для каждого наблюдения независимо. Чтобы ускорить обучение сверточной нейронной сети и снизить чувствительность к инициализации сети, используйте уровни групповой нормализации между сверточными слоями и нелинейностями, такими как уровни ReLU.

После нормализации уровень масштабирует входные данные с помощью обучаемого масштабного коэффициента γ и сдвигается на обучаемое смещение β.

Создание

Описание

пример

layer = groupNormalizationLayer(numGroups) создает слой нормализации группы.

пример

layer = groupNormalizationLayer(numGroups,Name,Value) создает слой нормализации группы и задает необязательный 'Epsilon', Параметры и инициализация, Скорость обучения и регуляризация, и Name с использованием одного или нескольких аргументов пары имя-значение. Можно указать несколько аргументов пары имя-значение. Заключите каждое имя свойства в кавычки.

Входные аргументы

развернуть все

Количество групп, на которые следует разделить каналы входных данных, указанных как одна из следующих:

  • Положительное целое число - деление входящих каналов на указанное число групп. Указанное число групп должно точно делить количество каналов входных данных.

  • 'all-channels' - Группировать все входящие каналы в одну группу. Это также называется нормализацией слоя. В качестве альтернативы можно использовать layerNormalizationLayer.

  • 'channel-wise' - Рассматривать все входящие каналы как отдельные группы. Это также называется нормализацией экземпляра. В качестве альтернативы можно использовать instanceNormalizationLayer.

Свойства

развернуть все

Нормализация группы

Константа для добавления к отклонениям мини-пакета, заданная как числовой скаляр, равный или больший, чем 1e-5.

Слой добавляет эту постоянную к отклонениям мини-партии перед нормализацией, чтобы обеспечить числовую стабильность и избежать деления на ноль.

Количество входных каналов, указанных как 'auto' или положительное целое число.

Это свойство всегда равно количеству каналов входа в слой. Если NumChannels равняется 'auto', то программное обеспечение автоматически определяет правильное значение количества каналов во время обучения.

Параметры и инициализация

Функция инициализации масштабных коэффициентов канала, определяемых одним из следующих параметров:

  • 'ones' - Инициализируйте масштабные коэффициенты канала единицами.

  • 'zeros' - Инициализируйте масштабные коэффициенты канала нулями.

  • 'narrow-normal' - Инициализировать масштабные коэффициенты канала путем независимой выборки из нормального распределения с нулевым средним и стандартным отклонением 0,01.

  • Дескриптор функции - инициализация масштабных коэффициентов канала с помощью пользовательской функции. Если указан дескриптор функции, то функция должна иметь вид scale = func(sz), где sz - размер шкалы. Пример см. в разделе Определение пользовательской функции инициализации веса.

Уровень инициализирует масштабные коэффициенты канала только в том случае, если Scale пустое свойство.

Типы данных: char | string | function_handle

Функция инициализации смещений канала, указанная как одно из следующих:

  • 'zeros' - Инициализируйте смещения канала нулями.

  • 'ones' - Инициализация смещений канала с помощью таковых.

  • 'narrow-normal' - Инициализация смещений канала путем независимой выборки из нормального распределения с нулевым средним и стандартным отклонением 0,01.

  • Дескриптор функции - инициализация смещений канала с помощью пользовательской функции. Если указан дескриптор функции, то функция должна иметь вид offset = func(sz), где sz - размер шкалы. Пример см. в разделе Определение пользовательской функции инициализации веса.

Уровень инициализирует смещения канала только в том случае, если Offset пустое свойство.

Типы данных: char | string | function_handle

Масштабные коэффициенты канала γ, заданные как числовой массив.

Масштабные коэффициенты канала являются обучаемыми параметрами. При обучении сети, если Scale является непустым, то trainNetwork использует Scale свойство в качестве начального значения. Если Scale пуст, затем trainNetwork использует инициализатор, указанный ScaleInitializer.

Во время обучения, Scale является одним из следующих:

  • Для 2-D ввода изображения числовой массив размером 1 на 1 по-NumChannels

  • Для 3D входа изображения, числового множества размера 1 на 1 на 1NumChannels

  • Для ввода элемента или последовательности числовой массив размера NumChannels-по-1

Смещение канала β, указанное как числовой массив.

Смещения каналов являются обучаемыми параметрами. При обучении сети, если Offset является непустым, то trainNetwork использует Offset свойство в качестве начального значения. Если Offset пуст, затем trainNetwork использует инициализатор, указанный OffsetInitializer.

Во время обучения, Offset является одним из следующих:

  • Для 2-D ввода изображения числовой массив размером 1 на 1 по-NumChannels

  • Для 3D входа изображения, числового множества размера 1 на 1 на 1NumChannels

  • Для ввода элемента или последовательности числовой массив размера NumChannels-по-1

Скорость обучения и регуляризация

Коэффициент скорости обучения для масштабных коэффициентов, заданный как неотрицательный скаляр.

Программное обеспечение умножает этот коэффициент на глобальную скорость обучения для определения скорости обучения для масштабных коэффициентов в слое. Например, если ScaleLearnRateFactor является 2затем скорость обучения для масштабных коэффициентов в слое в два раза превышает текущую глобальную скорость обучения. Программа определяет глобальную скорость обучения на основе настроек, указанных в trainingOptions функция.

Коэффициент скорости обучения для смещений, заданный как неотрицательный скаляр.

Программное обеспечение умножает этот коэффициент на глобальную скорость обучения для определения скорости обучения для смещений на уровне. Например, если OffsetLearnRateFactor равняется 2затем скорость обучения для смещений в слое в два раза превышает текущую глобальную скорость обучения. Программа определяет глобальную скорость обучения на основе настроек, указанных в trainingOptions функция.

L2 коэффициент регуляризации для масштабных коэффициентов, определяемый как неотрицательный скаляр.

Программное обеспечение умножает этот коэффициент на глобальный коэффициент регуляции L2, чтобы определить скорость обучения для масштабных коэффициентов в слое. Например, если ScaleL2Factor 2, то L2 регуляризация для смещений в слое в два раза больше глобального коэффициента регуляризации L2. Можно указать глобальный коэффициент регуляризации L2 с помощью trainingOptions функция.

L2 коэффициент регуляризации для смещений, определяемый как неотрицательный скаляр.

Программное обеспечение умножает этот коэффициент на глобальный коэффициент регуляции L2, чтобы определить скорость обучения для смещений на уровне. Например, если OffsetL2Factor 2, то L2 регуляризация для смещений в слое в два раза больше глобального коэффициента регуляризации L2. Можно указать глобальный коэффициент регуляризации L2 с помощью trainingOptions функция.

Слой

Имя слоя, указанное как символьный вектор или строковый скаляр. Чтобы включить слой в график слоев, необходимо указать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с уровнем и Name имеет значение ''затем программа автоматически присваивает имя слою во время обучения.

Типы данных: char | string

Количество входов слоя. Этот слой принимает только один вход.

Типы данных: double

Входные имена слоя. Этот слой принимает только один вход.

Типы данных: cell

Количество выходов уровня. Этот уровень имеет только один выход.

Типы данных: double

Выходные имена слоя. Этот уровень имеет только один выход.

Типы данных: cell

Примеры

свернуть все

Создайте уровень нормализации группы, нормализующий входящие данные по трем группам каналов. Назовите слой 'groupnorm'.

layer = groupNormalizationLayer(3,'Name','groupnorm')
layer = 
  GroupNormalizationLayer with properties:

           Name: 'groupnorm'
    NumChannels: 'auto'

   Hyperparameters
      NumGroups: 3
        Epsilon: 1.0000e-05

   Learnable Parameters
         Offset: []
          Scale: []

  Show all properties

Включение уровня нормализации группы в Layer массив. Нормализуйте входящие 20 каналов в четырех группах.

layers = [
    imageInputLayer([28 28 3])
    convolution2dLayer(5,20)
    groupNormalizationLayer(4)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  8x1 Layer array with layers:

     1   ''   Image Input             28x28x3 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   Group Normalization     Group normalization
     4   ''   ReLU                    ReLU
     5   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     6   ''   Fully Connected         10 fully connected layer
     7   ''   Softmax                 softmax
     8   ''   Classification Output   crossentropyex

Подробнее

развернуть все

Алгоритмы

Операция групповой нормализации нормализует элементы xi входного сигнала, сначала вычисляя среднее значение мкG и σG2 дисперсии по пространственным, временным и сгруппированным подмножествам размеров канала для каждого наблюдения независимо. Затем он вычисляет нормализованные активации как

x ^ i = xi μGσG2 + start,

где ϵ - константа, которая улучшает числовую стабильность, когда дисперсия очень мала. Для обеспечения возможности того, что входы с нулевым средним и единичной дисперсией не являются оптимальными для операций, которые следуют за групповой нормализацией, операция групповой нормализации дополнительно сдвигает и масштабирует активации с помощью преобразования

yi = γ x ^ i + β,

где смещение β и масштабный коэффициент γ являются обучаемыми параметрами, которые обновляются во время обучения сети.

Ссылки

[1] У, Юсинь и Каймин Хэ. «Нормализация группы». ArXiv:1803.08494 [Cs], 11 июня 2018 года. http://arxiv.org/abs/1803.08494.

Представлен в R2020b