crosschannelnorm

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

Описание

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

Примечание

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

пример

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

y=x(K+α*sswindowSize)β

где y является элементом dlYx является соответствующим элементом 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 функция нормализует каждый ответ активации на основе локальных откликов в заданном окне канала. Для получения дополнительной информации смотрите определение Local Response Normalization на crossChannelNormalizationLayer страница с описанием.

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

Введенный в R2020a