groupnorm

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

    Описание

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

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

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

    Примечание

    Чтобы применить нормализацию группы в layerGraph объект или Layer массив, использование groupNormalizationLayer.

    пример

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

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

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

    пример

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

    пример

    dlY = groupnorm(___Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Для примера, 'Epsilon',3e-5 устанавливает смещение отклонения равным 3e-5.

    Примеры

    свернуть все

    Использовать groupnorm для нормализации входных данных между группами каналов.

    Создайте входные данные как одно наблюдение случайных значений с высотой и шириной четырех и шести каналов.

    height = 4;
    width = 4;
    channels = 6;
    observations = 1;
    
    X = rand(height,width,channels,observations);
    dlX = dlarray(X,'SSCB');

    Создайте настраиваемые параметры.

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

    Вычислите нормализацию группы. Разделите вход на три группы по два канала в каждой.

    numGroups = 3;
    dlY = groupnorm(dlX,numGroups,offset,scaleFactor);
    

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

    свернуть все

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

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

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

    Количество групп каналов для нормализации, заданное в виде положительного целого числа 'all-channels', или 'channel-wise'.

    numGroupsОписание
    положительное целое числоРазделите входящие каналы на заданное количество групп. Указанное количество групп должно точно разделить количество каналов входных данных.
    'all-channels'Сгруппировать все входящие каналы в одну группу. Входные данные нормированы по всем каналам. Это также известно как нормализация слоя. В качестве альтернативы используйте layernorm.
    'channel-wise'Все входящие каналы рассматриваются как отдельные группы. Это также известно как нормализация образца. В качестве альтернативы используйте instancenorm.

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

    Смещение β, заданное как форматированное dlarray, неформатированный dlarray, или числовой массив с одним несовпадающим размером с размером, соответствующим размеру 'C' (канальная) размерность входного dlX.

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

    Масштабный коэффициент γ, заданный как форматированный dlarray, неформатированный dlarray, или числовой массив с одним несовпадающим размером с размером, соответствующим размеру 'C' (канальная) размерность входного dlX.

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

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

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

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

    Размерность неформатированных входных данных, заданный как разделенная разделенными запятой парами, состоящая из '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

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

    свернуть все

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

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

    Алгоритмы

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

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

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

    yi=γx^i+β,

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

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

    Введенный в R2020b