instanceNormalizationLayer

Слой нормализации образцов

Описание

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

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

Создание

Описание

пример

layer = instanceNormalizationLayer создает слой нормализации образца.

пример

layer = instanceNormalizationLayer(Name,Value) создает слой нормализации образцов и устанавливает дополнительные Epsilon, Параметры и инициализация, Темп обучения и регуляризация, и Name свойства с использованием одного или нескольких аргументов имя-значение. Можно задать несколько аргументов имя-значение. Заключайте каждое имя свойства в кавычки.

Пример: instanceNormalizationLayer('Name','instancenorm') создает слой нормализации образца с именем 'instancenorm'

Свойства

расширить все

Нормализация образца

Константа для добавления к мини-пакетному отклонениям, заданная как числовой скаляр, равная или больше 1e-5.

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

Количество каналов входа, заданное как 'auto' или положительное целое число.

Это свойство всегда равно количеству каналов входа в слой. Если NumChannels равен 'auto', затем программа автоматически определяет правильное значение количества каналов во время обучения.

Параметры и инициализация

Функция для инициализации масштабных коэффициентов канала, заданная как одно из следующего:

  • 'ones' - Инициализируйте масштабные коэффициенты канала с таковые.

  • 'zeros' - Инициализируйте масштабные коэффициенты канала с нулями.

  • 'narrow-normal' - Инициализируйте масштабные коэффициенты канала путем независимой дискретизации из нормального распределения с нулевым средним и стандартным отклонением 0,01.

  • Указатель на функцию - Инициализируйте масштабные коэффициенты канала с помощью пользовательской функции. Если вы задаете указатель на функцию, то функция должна иметь вид scale = func(sz), где sz - размер шкалы. Для получения примера смотрите Задать Пользовательскую Функцию Инициализации Веса.

Слой инициализирует масштабные коэффициенты канала только тогда, когда Scale свойство пустое.

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

Функция для инициализации смещений канала, заданная как одно из следующего:

  • 'zeros' - Инициализируйте смещения канала с нулями.

  • 'ones' - Инициализируйте смещения канала с таковые.

  • 'narrow-normal' - Инициализируйте смещения канала путем независимой дискретизации из нормального распределения с нулевым средним и стандартным отклонением 0,01.

  • Указатель на функцию - Инициализируйте смещения канала с помощью пользовательской функции. Если вы задаете указатель на функцию, то функция должна иметь вид offset = func(sz), где sz - размер шкалы. Для получения примера смотрите Задать Пользовательскую Функцию Инициализации Веса.

Слой инициализирует смещения канала только тогда, когда Offset свойство пустое.

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

Масштабные коэффициенты канала γ, заданные как числовой массив.

Масштабные коэффициенты канала являются настраиваемыми параметрами. При обучении сети, если Scale непусто, тогда trainNetwork использует Scale свойство как начальное значение. Если Scale пуст, тогда trainNetwork использует инициализатор, заданный как ScaleInitializer.

Во время обучения Scale является одним из следующих:

  • Для 2-D входов изображений - числовой массив размера 1 на 1 by- NumChannels

  • Для 3D входа изображения, числового массива размера 1 на 1 на 1 NumChannels

  • Для ввода функции или последовательности используйте числовой массив размера NumChannels-by-1

Смещения канала β, заданные как числовой массив.

Смещения канала являются настраиваемыми параметрами. При обучении сети, если Offset непусто, тогда trainNetwork использует Offset свойство как начальное значение. Если Offset пуст, тогда trainNetwork использует инициализатор, заданный как OffsetInitializer.

Во время обучения Offset является одним из следующих:

  • Для 2-D входов изображений - числовой массив размера 1 на 1 by- NumChannels

  • Для 3D входа изображения, числового массива размера 1 на 1 на 1 NumChannels

  • Для ввода функции или последовательности используйте числовой массив размера NumChannels-by-1

Темп обучения и регуляризация

Коэффициент скорости обучения для масштабных коэффициентов, заданный как неотрицательный скаляр.

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

Коэффициент скорости обучения для смещений, заданный как неотрицательный скаляр.

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

L2 регуляризационный коэффициент для коэффициентов шкалы, заданный как неотрицательный скаляр.

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

L2 регуляризации для смещений, заданный как неотрицательный скаляр.

Программа умножает этот коэффициент на глобальный коэффициент регуляризации L2, чтобы определить скорость обучения для смещений в слое. Для примера, если OffsetL2Factor равен 2, тогда L2 регуляризация для смещений в слое в два раза превышает глобальный коэффициент регуляризации L2. Можно задать глобальный коэффициент регуляризации L2 с помощью trainingOptions функция.

Слой

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

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

Количество входов слоя. Этот слой принимает только один вход.

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

Входные имена слоя. Этот слой принимает только один вход.

Типы данных: cell

Количество выходов слоя. Этот слой имеет только один выход.

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

Выходные имена слоя. Этот слой имеет только один выход.

Типы данных: cell

Примеры

свернуть все

Создайте слой нормализации образца с именем 'instancenorm'.

layer = instanceNormalizationLayer('Name','instancenorm')
layer = 
  InstanceNormalizationLayer with properties:

           Name: 'instancenorm'
    NumChannels: 'auto'

   Hyperparameters
        Epsilon: 1.0000e-05

   Learnable Parameters
         Offset: []
          Scale: []

  Show all properties

Включите слой нормализации образца в Layer массив.

layers = [
    imageInputLayer([28 28 3])
    convolution2dLayer(5,20)
    instanceNormalizationLayer
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  8x1 Layer array with layers:

     1   ''   Image Input              28x28x3 images with 'zerocenter' normalization
     2   ''   Convolution              20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   Instance Normalization   Instance normalization
     4   ''   ReLU                     ReLU
     5   ''   Max Pooling              2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     6   ''   Fully Connected          10 fully connected layer
     7   ''   Softmax                  softmax
     8   ''   Classification Output    crossentropyex

Алгоритмы

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

xi^=xiμIσI2+ϵ,

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

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

yi=γx^i+β,

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

Введенный в R2021a