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,

где σ2* обозначает обновлённое отклонение updatedSigmaSq, λσ2 обозначает значение распада отклонения 'VarianceDecay', σ2^ обозначает отклонение входных данных, и σ2 обозначает текущее значение отклонения 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,

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

Алгоритмы

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

xi^=xiμBσB2+ϵ,

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

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

yi=γx^i+β,

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

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

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

Введенный в R2019b