exponenta event banner

layerNormalizationLayer

Уровень нормализации слоев

    Описание

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

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

    Создание

    Описание

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

    пример

    layer = layerNormalizationLayer(Name,Value) устанавливает необязательный Epsilon, Параметры и инициализация, Скорость обучения и регуляризация, и Name с использованием одной или нескольких пар имя-значение. Например, 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 является одним из следующих:

    • Для 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

    Примеры

    свернуть все

    Создание слоя нормализации слоев с именем '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 входного сигнала, сначала вычисляя среднее значение мкл и σL2 дисперсии по пространственным, временным и канальным измерениям для каждого наблюдения независимо. Затем он вычисляет нормализованные активации как

    xi^=xi−μLσL2+ϵ.

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

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

    yi = γ x ^ i + β,

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

    Ссылки

    [1] Ба, Джимми Лей, Джейми Райан Кирос и Джеффри Хинтон. «Нормализация слоя». arXiv препринт arXiv:1607.06450 (2016).

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