crosschannelnorm

Межканальный квадрат - нормирует использующие локальные ответы

Описание

Межканальная операция нормализации использует локальные ответы в различных каналах, чтобы нормировать каждую активацию. Межканальная нормализация обычно следует за a 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, α из 1A β из 1, и a K из 1e-5. Задайте формат данных 'SSC'.

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

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

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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Порядок размерности бесформатных входных данных в виде вектора символов или строкового скаляра FMT это обеспечивает метку для каждой размерности данных.

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

  • "S" — Пространственный

  • "C" — Канал

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

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

  • "U" — Незаданный

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

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

Типы данных: 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