exponenta event banner

batchnorm

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

Описание

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

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

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

Примечание

Применение пакетной нормализации в пределах layerGraph объект или Layer массив, использование batchNormalizationLayer.

пример

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

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

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

[dlY,popMu,popSigmaSq] = batchnorm(dlX,offset,scaleFactor) также возвращает среднее значение заполнения и дисперсию входных данных dlX.

dlY = batchnorm(dlX,offset,scaleFactor,mu,sigmaSq) применяет операцию нормализации партии с использованием среднего значения и отклонения mu и sigmaSqсоответственно.

пример

[dlY,updatedMu,updatedSigmaSq] = batchnorm(dlX,offset,scaleFactor,mu,sigmaSq) применяет операцию нормализации партии с использованием среднего значения и отклонения mu и sigmaSq, соответственно, а также возвращает обновленную статистику скользящего среднего и дисперсии.

Этот синтаксис используется для ведения текущих значений для данных статистики средних значений и отклонений во время обучения. Используйте окончательные обновленные значения среднего и отклонения для прогнозирования и классификации.

[___] = batchnorm(___,'DataFormat',FMT) применяет операцию нормализации пакета к неформатированным входным данным с форматом, указанным в FMT с использованием любого из предыдущих синтаксисов. Продукция dlY является неформатированным dlarray объект с размерами в том же порядке, что и dlX. Например, 'DataFormat','SSCB' задает данные для 2-D ввода изображения в формате 'SSCB' (пространственный, пространственный, канальный, пакетный).

[___] = batchnorm(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущих синтаксисах. Например, 'MeanDecay',0.3 задает скорость затухания вычисления скользящего среднего.

Примеры

свернуть все

Создание форматированного dlarray объект, содержащий партию 128 изображений 28 на 28 с 3 каналами. Укажите формат 'SSCB' (пространственный, пространственный, канальный, пакетный).

miniBatchSize = 128;
inputSize = [28 28];
numChannels = 3;
X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);
dlX = dlarray(X,'SSCB');

Просмотр размера и формата входных данных.

size(dlX)
ans = 1×4

    28    28     3   128

dims(dlX)
ans = 
'SSCB'

Инициализируйте масштаб и смещение для нормализации партии. Для масштаба укажите вектор единиц. Для смещения укажите вектор нулей.

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

Примените операцию нормализации пакета с помощью batchnorm и возвращает статистику мини-партии.

[dlY,mu,sigmaSq] = batchnorm(dlX,offset,scaleFactor);

Просмотр размера и формата выходных данных dlY.

size(dlY)
ans = 1×4

    28    28     3   128

dims(dlY)
ans = 
'SSCB'

Просмотр среднего значения мини-партии mu.

mu
mu = 3×1

    0.4998
    0.4993
    0.5011

Просмотр отклонения мини-партии sigmaSq.

sigmaSq
sigmaSq = 3×1

    0.0831
    0.0832
    0.0835

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

Создайте три пакета данных. Данные состоят из 10 на 10 случайных массивов с пятью каналами. Каждая партия содержит 20 наблюдений. Вторая и третья партии масштабируются мультипликативным коэффициентом, равным 1.5 и 2.5соответственно, поэтому среднее значение набора данных увеличивается с каждым пакетом.

height = 10;
width = 10;
channels = 5;
observations = 20;

X1 = rand(height,width,channels,observations);
dlX1 = dlarray(X1,'SSCB');

X2 = 1.5*rand(height,width,channels,observations);
dlX2 = dlarray(X2,'SSCB');

X3 = 2.5*rand(height,width,channels,observations);
dlX3 = dlarray(X3,'SSCB');

Создайте обучаемые параметры.

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

Нормализовать первый пакет данных, dlX1, используя batchnorm. Получите значения среднего значения и отклонения этой партии в качестве выходных данных.

[dlY1,mu,sigmaSq] = batchnorm(dlX1,offset,scale);

Нормализовать второй пакет данных, dlX2. Использовать mu и sigmaSq в качестве входных данных для получения значений комбинированного среднего и дисперсии данных в пакетах dlX1 и dlX2.

[dlY2,datasetMu,datasetSigmaSq] = batchnorm(dlX2,offset,scale,mu,sigmaSq);

Нормализовать окончательный пакет данных, dlX3. Обновление статистики набора данных datasetMu и datasetSigmaSq для получения значений комбинированного среднего и дисперсии всех данных в пакетах dlX1, dlX2, и dlX3.

[dlY3,datasetMuFull,datasetSigmaSqFull] = batchnorm(dlX3,offset,scale,datasetMu,datasetSigmaSq);

Наблюдайте за изменением среднего значения каждого канала по мере нормализации каждой партии.

plot([mu';datasetMu';datasetMuFull'])
legend({'Channel 1','Channel 2','Channel 3','Channel 4','Channel 5'},'Location','southeast')
xticks([1 2 3])
xlabel('Number of Batches')
xlim([0.9 3.1])
ylabel('Per-Channel Mean')
title('Data Set Mean')

Figure contains an axes. The axes with title Data Set Mean contains 5 objects of type line. These objects represent Channel 1, Channel 2, Channel 3, Channel 4, Channel 5.

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

свернуть все

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

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

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

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

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

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

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

Средняя статистика для нормализации, указанная как числовой вектор той же длины, что и 'C' размерность входных данных.

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

Статистика дисперсии для нормализации, заданная как числовой вектор той же длины, что и 'C' размерность входных данных.

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

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

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

Пример: 'MeanDecay',0.3,'VarianceDecay',0.5 устанавливает скорость затухания для вычислений скользящего среднего среднего и дисперсию нескольких партий данных в 0.3 и 0.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

Значение затухания для скользящего среднего вычисления, заданного как числовой скаляр между 0 и 1.

Функция обновляет скользящее среднее значение с помощью

μ*=λμμ^+(1−λμ)μ,

где λ * обозначает обновленное среднее значениеupdatedMu, λ λ обозначает среднее значение затухания 'MeanDecay', λ ^ обозначает среднее из входных данных, и λ обозначает текущее значение среднегоmu.

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

Значение затухания для вычисления скользящей дисперсии, указанное как числовой скаляр между 0 и 1.

Функция обновляет значение скользящего отклонения с помощью

σ2*=λσ2σ2^+(1−λσ2)σ2,

где start2 * обозначает обновленную дисперсиюupdatedSigmaSq, λ λ 2 обозначает величину затухания дисперсии 'VarianceDecay', λ 2 ^ обозначает дисперсию входных данных, а start2 обозначает текущее значение дисперсииsigmaSq.

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

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

свернуть все

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

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

Размер выходного сигнала dlY соответствует размеру входного сигнала dlX.

Среднее по каналу входных данных, возвращаемых в виде числового вектора-столбца длиной, равной размеру 'C' размерность входных данных.

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

Обновленная средняя статистика, возвращенная в виде числового вектора с длиной, равной размеру 'C' размерность входных данных.

Функция обновляет скользящее среднее значение с помощью

μ*=λμμ^+(1−λμ)μ,

где λ * обозначает обновленное среднее значениеupdatedMu, λ λ обозначает среднее значение затухания 'MeanDecay', λ ^ обозначает среднее из входных данных, и λ обозначает текущее значение среднегоmu.

Обновленная статистика дисперсии, возвращенная в виде числового вектора с длиной, равной размеру 'C' размерность входных данных.

Функция обновляет значение скользящего отклонения с помощью

σ2*=λσ2σ2^+(1−λσ2)σ2,

где start2 * обозначает обновленную дисперсиюupdatedSigmaSq, λ λ 2 обозначает величину затухания дисперсии 'VarianceDecay', λ 2 ^ обозначает дисперсию входных данных, а start2 обозначает текущее значение дисперсииsigmaSq.

Алгоритмы

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

xi^=xi−μBσB2+ϵ,

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

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

yi = γ x ^ i + β,

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

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

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

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