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,updatedMu,updatedSigmaSq] = batchnorm(dlX,offset,scaleFactor,runningMu,runningSigmaSq) применяет операцию нормализации партии. и также возвращает обновленное скользящее среднее значение и статистику отклонения. runningMu и runningSigmaSq среднее значение и значения отклонения после предыдущей учебной итерации, соответственно.

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

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

Используйте этот синтаксис во время классификации и предсказания, где trainedMu и trainedSigmaSq окончательные значения среднего значения и отклонения после того, как вы закончили обучение, соответственно.

[___] = 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;
numChannels = 5;
observations = 20;

X1 = rand(height,width,numChannels,observations);
dlX1 = dlarray(X1,"SSCB");

X2 = 1.5*rand(height,width,numChannels,observations);
dlX2 = dlarray(X2,"SSCB");

X3 = 2.5*rand(height,width,numChannels,observations);
dlX3 = dlarray(X3,"SSCB");

Создайте настраиваемые параметры.

offset = zeros(numChannels,1);
scale = ones(numChannels,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 " + string(1: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 object. The axes object 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' размерность входных данных.

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

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

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

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

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

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

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

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

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

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

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

Аргументы name-value

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

Пример: 'MeanDecay',0.3,'VarianceDecay',0.5 устанавливает уровень затухания для расчетов скользящего среднего значения среднего значения и отклонения нескольких пакетов данных к 0.3 и 0.5, соответственно.

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

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

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

  • "C" — Канал

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

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

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

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

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

Типы данных: char | string

Смещение отклонения для предотвращения делит на нуль ошибки в виде разделенной запятой пары, состоящей из 'Epsilon' и числовой скаляр, больше, чем или равный 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