layerNormalizationLayer

Слой нормализации слоя

    Описание

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

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

    Создание

    Описание

    layer = layerNormalizationLayer создает слой нормализации слоя.

    пример

    layer = layerNormalizationLayer(Name,Value) устанавливает дополнительный Epsilon, Параметры и инициализация, скорость обучения и регуляризация и Name свойства с помощью одних или нескольких аргументов name-value. Например, layerNormalizationLayer('Name','layernorm') создает слой нормализации слоя с именем 'layernorm'.

    Свойства

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

    Нормализация слоя

    Постоянный, чтобы добавить к мини-пакетным отклонениям в виде числового скаляра равняются или больше, чем 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 одно из следующего:

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

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

    • Для функции или входа последовательности, числового массива размера NumChannels- 1

    Канал возмещает β в виде числового массива.

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

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

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

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

    • Для функции или входа последовательности, числового массива размера NumChannels- 1

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

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

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

    Фактор скорости обучения для смещений в виде неотрицательного скаляра.

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

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

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

    Фактор регуляризации L2 для смещений в виде неотрицательного скаляра.

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

    Слой

    Имя слоя в виде вектора символов или строкового скаляра. Для Layer вход массивов, trainNetwork, assembleNetwork, layerGraph, и dlnetwork функции автоматически присваивают имена к слоям с Name установите на ''.

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

    Это свойство доступно только для чтения.

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

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

    Это свойство доступно только для чтения.

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

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

    Это свойство доступно только для чтения.

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

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

    Это свойство доступно только для чтения.

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

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

    Примеры

    свернуть все

    Создайте слой нормализации слоя с именем 'layernorm'.

    layer = layerNormalizationLayer('Name','layernorm')
    layer = 
      LayerNormalizationLayer with properties:
    
               Name: 'layernorm'
        NumChannels: 'auto'
    
       Hyperparameters
            Epsilon: 1.0000e-05
    
       Learnable Parameters
             Offset: []
              Scale: []
    
      Show all properties
    
    

    Включайте слой нормализации слоя в Layer массив.

    layers = [
        imageInputLayer([32 32 3]) 
        convolution2dLayer(3,16,'Padding',1)
        layerNormalizationLayer
        reluLayer   
        maxPooling2dLayer(2,'Stride',2)
        convolution2dLayer(3,32,'Padding',1)
        layerNormalizationLayer
        reluLayer
        fullyConnectedLayer(10)
        softmaxLayer
        classificationLayer]
    layers = 
      11x1 Layer array with layers:
    
         1   ''   Image Input             32x32x3 images with 'zerocenter' normalization
         2   ''   Convolution             16 3x3 convolutions with stride [1  1] and padding [1  1  1  1]
         3   ''   Layer Normalization     Layer normalization
         4   ''   ReLU                    ReLU
         5   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
         6   ''   Convolution             32 3x3 convolutions with stride [1  1] and padding [1  1  1  1]
         7   ''   Layer Normalization     Layer normalization
         8   ''   ReLU                    ReLU
         9   ''   Fully Connected         10 fully connected layer
        10   ''   Softmax                 softmax
        11   ''   Classification Output   crossentropyex
    

    Алгоритмы

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

    xi^=xiμLσL2+ϵ,

    где ϵ является константой, которая улучшает числовую устойчивость, когда отклонение очень мало.

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

    yi=γx^i+β,

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

    Ссылки

    [1] Ba, Джимми Лэй, Джейми Райан Кирос и Джеффри Э. Хинтон. “Нормализация слоя”. Предварительно распечатайте, представленный 21 июля 2016. https://arxiv.org/abs/1607.06450.

    Введенный в R2021a