layernorm

Нормализуйтесь по всем каналам для каждого наблюдения независимо

    Описание

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

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

    layernorm функция применяет операцию нормализации слоя к dlarray данные. Использование dlarray облегчает работу с данными высоких размерностей, позволяя пометить размеры. Для примера можно пометить, какие размерности соответствуют пространственным, временным, канальным и пакетным размерностям, используя 'S', 'T', 'C', и 'B' метки, соответственно. Для неопределенных и других размерностей используйте 'U' метка. Для dlarray функции объекта, которые работают над конкретными размерностями, можно задать метки размера путем форматирования dlarray объект непосредственно, или при помощи 'DataFormat' опция.

    Примечание

    Применение нормализации слоя в layerGraph объект или Layer массив, использование layerNormalizationLayer.

    пример

    dlY = layernorm(dlX,offset,scaleFactor) применяет операцию нормализации слоя к входным данным dlX и преобразуется с использованием заданных смещения и масштабного коэффициента.

    Функция нормализуется по 'S' (пространственный), 'T' (время), 'C' (канал), и 'U' (не заданные) размерности dlX для каждого наблюдения в 'B' (пакетная) размерность, независимо.

    Для неформатированных входных данных используйте 'DataFormat' опция.

    dlY = layernorm(dlX,offset,scaleFactor,'DataFormat',FMT) применяет операцию нормализации слоя к неформатированному dlarray dlX объекта с форматом, заданным FMT использование любого из предыдущих синтаксисов. Область выхода dlY является неформатированным dlarray объект с размерностями в том же порядке, что и dlX. Для примера, 'DataFormat','SSCB' задает данные для 2-D изображения входа с форматом 'SSCB' (пространственный, пространственный, канальный, пакетный).

    Чтобы задать формат шкалы и смещения, используйте 'ScaleFormat' и 'OffsetFormat' опции, соответственно.

    [dlY] = layernorm(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Для примера, 'Epsilon',1e-4 устанавливает значение эпсилона равным 1e-4.

    Примеры

    свернуть все

    Создайте форматированный dlarray объект, содержащий партию из 128 последовательностей длиной 100 с 10 каналами. Задайте формат 'CBT' (канал, пакет, время).

    numChannels = 10;
    miniBatchSize = 128;
    sequenceLength = 100;
    
    X = rand(numChannels,miniBatchSize,sequenceLength);
    dlX = dlarray(X,'CBT');

    Просмотрите размер и формат входных данных.

    size(dlX)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlX)
    ans = 
    'CBT'
    

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

    offset = zeros(numChannels,1);
    scaleFactor = ones(numChannels,1);

    Примените операцию нормализации слоя с помощью layernorm функция.

    dlY = layernorm(dlX,offset,scaleFactor);

    Просмотрите размер и формат выхода dlY.

    size(dlY)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlY)
    ans = 
    'CBT'
    

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

    Создайте форматированный dlarray объект, содержащий партию из 128 последовательностей длиной 100 с 10 каналами. Задайте формат 'CBT' (канал, пакет, время).

    numChannels = 10;
    miniBatchSize = 128;
    sequenceLength = 100;
    X = rand(numChannels,miniBatchSize,sequenceLength);
    dlX = dlarray(X,'CBT');

    Просмотрите размер и формат входных данных.

    size(dlX)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlX)
    ans = 
    'CBT'
    

    Для поэлементной нормализации слоя инициализируйте смещение и шкалу с массивом нулей и таковых.

    offset = zeros(numChannels,sequenceLength);
    scaleFactor = ones(numChannels,sequenceLength);

    Примените операцию нормализации слоя с помощью layernorm функция. Задайте форматы смещения и шкалы следующим 'CT' (канал, время) использование 'OffsetFormat' и 'ScaleFormat' опции, соответственно.

    dlY = layernorm(dlX,offset,scaleFactor,'OffsetFormat','CT','ScaleFormat','CT');

    Просмотрите размер и формат выхода dlY.

    size(dlY)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlY)
    ans = 
    'CBT'
    

    Входные параметры

    свернуть все

    Входные данные, заданные как форматированное dlarray, неформатированный dlarray, или числовой массив.

    Если dlX является неформатированным dlarray или числовой массив, тогда вы должны задать формат используя 'DataFormat' опция. Если dlX является числовым массивом, то либо scaleFactor или offset должен быть dlarray объект.

    dlX должен иметь 'C' (канальная) размерность.

    Смещение β, заданное как форматированное dlarray, неформатированный dlarray, или числовой массив.

    Размер и формат смещения зависят от типа преобразования.

    ЗадачаОписание
    Канальное преобразование

    Массив с одним несовпадающим размером с размером, соответствующим размеру 'C' (канальная) размерность входного dlX.

    Для канального преобразования, если offset является форматированным dlarray объект, тогда размерность nonsingleton должно иметь метку 'C' (канал).

    Поэлементное преобразование

    Массив с 'C' (канальная) размерность совпадает с размером 'C' (канальная) размерность входного dlX и нули или одинаковое количество 'S' (пространственный), 'T' (время), и 'U' (не заданные) размерности входного dlX.

    Каждое измерение должно иметь размер 1 или иметь размеры, совпадающие с соответствующими размерностями в вход dlX. Для любых повторных размерностей, например, нескольких 'S' (пространственные) размеры должны совпадать с соответствующими размерностями в dlX или все должны быть одиночками.

    Программа автоматически расширяет любые размерности, чтобы соответствовать размеру одного наблюдения во входе dlX.

    Для поэлементного преобразования, если offset является числовым массивом или неформатированным dlarray, затем необходимо задать формат смещения с помощью 'OffsetFormat' опция.

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

    Размер и формат смещения зависят от типа преобразования:

    ЗадачаОписание
    Канальное преобразование

    Массив с одним несовпадающим размером с размером, соответствующим размеру 'C' (канальная) размерность входного dlX.

    Для канального преобразования, если scaleFactor является форматированным dlarray объект, тогда размерность nonsingleton должно иметь метку 'C' (канал).

    Поэлементное преобразование

    Массив с 'C' (канальная) размерность совпадает с размером 'C' (канальная) размерность входного dlX и нули или одинаковое количество 'S' (пространственный), 'T' (время), и 'U' (не заданные) размерности входного dlX.

    Каждое измерение должно иметь размер 1 или иметь размеры, совпадающие с соответствующими размерностями в вход dlX. Для любых повторных размерностей, например, нескольких 'S' (пространственные) размеры должны совпадать с соответствующими размерностями в dlX или все должны быть одиночками.

    Программа автоматически расширяет любые размерности, чтобы соответствовать размеру одного наблюдения во входе dlX.

    Для поэлементного преобразования, если scaleFactor является числовым массивом или неформатированным dlarray, затем необходимо задать формат шкалы с помощью 'ScaleFormat' опция.

    Аргументы в виде пар имя-значение

    Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

    Пример: 'Epsilon',1e-4 устанавливает значение смещения отклонения равным 1e-4.

    Размерность неформатированных входных данных, заданный как разделенная разделенными запятой парами, состоящая из 'DataFormat' и вектор символов или строковый скаляр FMT который обеспечивает метку для каждой размерности данных.

    При указании формата dlarray объект, каждый символ предоставляет метку для каждой размерности данных и должен быть одним из следующих:

    • 'S' - Пространственный

    • 'C' - Канал

    • 'B' - Партия (например, выборки и наблюдения)

    • 'T' - Время (например, временные шаги последовательностей)

    • 'U' - Не определено

    Можно задать несколько размерности, маркированных 'S' или 'U'. Можно использовать метки 'C', 'B', и 'T' самое большее сразу.

    Вы должны задать 'DataFormat' когда входные данные не являются форматированным dlarray.

    Пример: 'DataFormat','SSCB'

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

    Смещение отклонения для предотвращения ошибок деления на нули, заданное как разделенная разделенными запятой парами, состоящая из 'Epsilon' и числовой скаляр. Заданное значение должно быть больше 1e-5. Значение по умолчанию 1e-5.

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

    Размерность неформатированного масштабного коэффициента, заданный как разделенная разделенными запятой парами, состоящая из 'ScaleFormat' и вектор символов или строковый скаляр.

    При указании формата dlarray объект, каждый символ предоставляет метку для каждой размерности данных и должен быть одним из следующих:

    • 'S' - Пространственный

    • 'C' - Канал

    • 'B' - Партия (например, выборки и наблюдения)

    • 'T' - Время (например, временные шаги последовательностей)

    • 'U' - Не определено

    Для нормализации слоя масштабный коэффициент должен иметь 'C' (канальная) размерность. Можно задать несколько размерности, маркированных 'S' или 'U'. Вы можете использовать метку 'T' (время) самое большее один раз. Коэффициент шкалы не должен иметь 'B' (пакетная) размерность.

    Вы должны задать 'ScaleFormat' для поэлементной нормализации при scaleFactor является числовым массивом или неформатированным dlarray.

    Пример: 'ScaleFormat','SSCB'

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

    Размерность неформатированного смещения, заданный как разделенная разделенными запятой парами, состоящая из 'OffsetFormat' и вектор символов или строковый скаляр.

    При указании формата dlarray объект, каждый символ предоставляет метку для каждой размерности данных и должен быть одним из следующих:

    • 'S' - Пространственный

    • 'C' - Канал

    • 'B' - Партия (например, выборки и наблюдения)

    • 'T' - Время (например, временные шаги последовательностей)

    • 'U' - Не определено

    Для нормализации слоя смещение должно иметь 'C' (канальная) размерность. Можно задать несколько размерности, маркированных 'S' или 'U'. Вы можете использовать метку 'T' (время) самое большее один раз. Смещение не должно иметь 'B' (пакетная) размерность.

    Вы должны задать 'OffsetFormat' для поэлементной нормализации при offset является числовым массивом или неформатированным dlarray.

    Пример: 'OffsetFormat','SSCB'

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

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

    свернуть все

    Нормированные данные, возвращенные как dlarray. Область выхода dlY имеет тот же базовый тип данных, что и входной dlX.

    Если входные данные dlX является форматированным dlarray, dlY имеет те же метки размерностей, что и dlX. Если входные данные не являются форматированным dlarray, dlY является неформатированным dlarray с тем же порядком размерности, что и входные данные.

    Алгоритмы

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

    xi^=xiμLσL2+ϵ.

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

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

    yi=γx^i+β,

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

    Расширенные возможности

    Введенный в R2021a
    Для просмотра документации необходимо авторизоваться на сайте