exponenta event banner

crosschannelnorm

Квадратная нормализация перекрестного канала с использованием локальных ответов

Описание

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

Примечание

Эта функция применяет операцию нормализации кросс-канала к dlarray данные. Если требуется применить кросс-канальную нормализацию в layerGraph объект или Layer используйте следующий слой:

пример

dlY = crosschannelnorm(dlX,windowSize) нормализует каждый элемент dlX относительно локальных значений в одной позиции в соседних каналах. Нормализованные элементы в dlY рассчитываются по элементам в dlX используя следующую формулу.

y = x (K + α * sswindowSize) β

где y - элемент dlY, x - соответствующий элемент dlX, ss - сумма квадратов элементов в области канала, определяемой windowSizeи α, β и K - гиперпараметры в нормализации.

пример

dlY = crosschannelnorm(dlX,windowSize,'DataFormat',FMT) также задает формат размера FMT когда dlX является неформатированным dlarray, в дополнение к входным аргументам предыдущий синтаксис. Продукция dlY является неформатированным dlarray с тем же порядком размеров, что и dlX.

пример

dlY = crosschannelnorm(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущих синтаксисах. Например, 'Beta',0.8 устанавливает значение константы β контраста в 0.8.

Примеры

свернуть все

Использовать crosschannelnorm нормализовать каждое наблюдение мини-пакета с использованием значений из соседних каналов.

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

height = 8;
width = 8;
channels = 6;
observations = 10;

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

Вычислите кросс-канальную нормализацию, используя размер окна канала три.

dlY = crosschannelnorm(dlX,3);

Каждое значение в каждом наблюдении dlX нормализуется с использованием элемента в предыдущем канале и элемента в следующем канале.

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

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

height = 2;
width = 2;
channels = 3;

X = ones(height,width,channels);
dlX = dlarray(X);

Нормализация данных с использованием размера окна канала 3, α из 1, β 1и K из 1e-5. Укажите формат данных 'SSC'.

dlY = crosschannelnorm(dlX,3,'Alpha',1,'Beta',1,'K',1e-5,'DataFormat','SSC');

Сравните значения в исходных и нормализованных данных путем преобразования трехканальных массивов в 2-D матрицы.

dlX = reshape(dlX,2,6)
dlX = 
  2x6 dlarray

     1     1     1     1     1     1
     1     1     1     1     1     1

dlY = reshape(dlY,2,6)
dlY = 
  2x6 dlarray

    1.5000    1.5000    1.0000    1.0000    1.5000    1.5000
    1.5000    1.5000    1.0000    1.0000    1.5000    1.5000

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

Обычно операция нормализации кросс-канала следует за операцией ReLU. Например, архитектура GoogLeNet содержит сверточные операции, за которыми следуют операции ReLU и нормализации кросс-канала.

Функция modelFunction В конце этого примера показано, как можно использовать в модели кросс-канальную нормализацию. Использовать modelFunction найти сгруппированную свертку и активацию ReLU некоторых входных данных, а затем нормализовать результат с помощью кросс-канальной нормализации с размером окна 5.

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

height = 10;
width = 10;
channels = 4;
observations = 1;

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

Создайте параметры для операции группирования свертки. Для весов используйте высоту и ширину фильтра: три, два канала на группу, три фильтра на группу и две группы. Используйте нулевое значение для смещения.

filterSize = [3 3];
numChannelsPerGroup = 2;
numFiltersPerGroup = 3 ;
numGroups = 2;

params = struct;
params.conv.weights = rand(filterSize(1),filterSize(2),numChannelsPerGroup,numFiltersPerGroup,numGroups);
params.conv.bias = 0;

Применить modelFunction к данным dlX.

dlY = modelFunction(dlX,params);
function dlY = modelFunction(dlX,params)

dlY = dlconv(dlX,params.conv.weights,params.conv.bias);
dlY = relu(dlY);
dlY = crosschannelnorm(dlY,5);

end

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

свернуть все

Входные данные, указанные как dlarray с форматом данных или без него. Когда dlX является неформатированным dlarray, необходимо указать формат данных с помощью 'DataFormat',FMT пара имя-значение.

Можно указать до двух размеров в dlX как 'S' размеры.

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

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

Если windowSize является четным, то окно асимметрично. Программное обеспечение просматривает предыдущее floor((windowSize-1)/2) каналы и следующее floor((windowSize)/2) каналы. Например, если windowSize является 4, то функция нормализует каждый элемент своим соседом в предыдущем канале и своими соседями в следующих двух каналах.

Пример: 3

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32

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

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

Пример: 'Alpha',2e-4,'Beta',0.8 устанавливает константу мультипликативной нормализации равной 0,0002, а экспоненту контрастной константы - 0,8.

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

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

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

  • 'C' - Канал

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

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

  • 'U' - Не указано

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

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

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

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

Константа нормализации (α), которая умножает сумму возведенных в квадрат значений, заданную как пара, разделенная запятыми, состоящая из 'Alpha' и числовой скаляр. Значение по умолчанию: 1e-4.

Пример: 'Alpha',2e-4

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32

Константа контраста (β), указанная как разделенная запятыми пара, состоящая из 'Beta' и числовой скаляр, больший или равный 0.01. Значение по умолчанию: 0.75.

Пример: 'Beta',0.8

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32

Гиперпараметр нормализации (K), используемый для исключения сингулярностей в нормализации, указанный как пара, разделенная запятыми, состоящая из 'K' и числовой скаляр, больший или равный 1e-5. Значение по умолчанию: 2.

Пример: 'K',2.5

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32

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

свернуть все

Нормализованные данные, возвращенные как dlarray. Продукция dlY имеет тот же базовый тип данных, что и входной dlX.

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

Подробнее

свернуть все

Кросс-канальная нормализация

crosschannelnorm функция нормализует каждый ответ активации на основе локальных ответов в заданном окне канала. Дополнительные сведения см. в определении локальной нормализации ответа на crossChannelNormalizationLayer справочная страница.

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

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