exponenta event banner

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

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

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

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

    yi = γ x ^ i + β,

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

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

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