batchnorm

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

Описание

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

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

batchnorm функция применяет операцию нормализации партии. к dlarray данные. Используя dlarray объекты делают работу с высокими размерными данными легче, позволяя вам пометить размерности. Например, можно пометить, которому размерности соответствуют пространственный, время, канал, и обрабатывают размерности в пакетном режиме с помощью 'S'TC, и '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' задает данные для 2D входа изображений с форматом '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 объект, затем неодноэлементная размерность должна иметь, маркируют 'C' (канал).

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

Если scaleFactor отформатированный dlarray объект, затем неодноэлементная размерность должна иметь, маркируют '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 и отклонения σB2 по пространственному, время и размерности наблюдения для каждого канала независимо. Затем это вычисляет нормированные активации как

xi^=xiμBσB2+ϵ,

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

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

yi=γx^i+β,

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

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

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

Введенный в R2019b