transposedConv3dLayer

Транспонированный 3-D слой свертки

Описание

Транспонированный 3-D слой свертки повышает качество трехмерных карт функций.

Этот слой иногда неправильно известен как слой «deconvolution» или «deconv». Этот слой является транспонированием свертки и не выполняет деконволюцию.

layer = transposedConv3dLayer(filterSize,numFilters) возвращает слой транспонированного 3-D свертки и устанавливает FilterSize и NumFilters свойства.

пример

layer = transposedConv3dLayer(filterSize,numFilters,Name,Value) возвращает транспонированный 3-D сверточный слой и задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".

Примеры

свернуть все

Создайте транспонированный 3-D сверточный слой с 32 фильтрами, каждый с высотой, шириной и глубиной 11. Используйте шаг 4 в горизонтальном и вертикальном направлениях и 2 по глубине.

layer = transposedConv3dLayer(11,32,'Stride',[4 4 2])
layer = 
  TransposedConvolution3DLayer with properties:

            Name: ''

   Hyperparameters
      FilterSize: [11 11 11]
     NumChannels: 'auto'
      NumFilters: 32
          Stride: [4 4 2]
    CroppingMode: 'manual'
    CroppingSize: [2x3 double]

   Learnable Parameters
         Weights: []
            Bias: []

  Show all properties

Входные параметры

свернуть все

Высота, ширина и глубина фильтров, заданная в виде вектора [h w d] из трех положительных целых чисел, где h - высота, w - ширина, и d - глубина. FilterSize определяет размер локальных областей, с которыми нейроны соединяются во входе.

Если вы задаете FilterSize используя входной параметр, можно задать FilterSize в качестве скаляра для использования одинакового значения для всех трёх размерностей.

Пример: [5 5 5] задает фильтры с высотой, шириной и глубиной 5.

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

Пример: 96

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

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

Пример: 'Cropping',1
Транспонированная свертка

свернуть все

Размер шага для прохождения входа в трёх размерностях, заданный как вектор [a b c] из трех положительных целых чисел, где a - вертикальный размер шага, b - горизонтальный размер шага, и c - размер шага по глубине. При создании слоя можно задать Stride в качестве скаляра для использования того же значения для размеров шагов во всех трех направлениях.

Пример: [2 3 1] задает размер шага по вертикали 2, размер шага по горизонтали 3 и размер шага по глубине 1.

Выход сигнала, заданное как одно из следующего:

  • 'same' - Установите обрезку так, чтобы размер выхода равнялся inputSize .* Stride, где inputSize - высота, ширина и глубина входа слоя. Если вы задаете 'Cropping' опция для 'same', затем программное обеспечение автоматически устанавливает CroppingMode свойство слоя, чтобы 'same'.

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

  • Положительное целое число - Обрезать заданный объем данных со всех ребер.

  • Вектор неотрицательных целых чисел [a b c] - Обрезка a с верхней частью и внизу обрезать b слева и справа и обрезать c спереди и сзади.

  • матрица неотрицательных целых чисел [t l f; b r bk] из неотрицательных целых чисел - Crop t, l, f, b, r, bk от верхней части, слева, спереди, снизу, справа и сзади входа, соответственно.

Пример: [1 2 2]

Количество каналов для каждого фильтра, заданное как 'NumChannels'auto' или положительное целое число.

Этот параметр должен быть равен количеству каналов входа в этот сверточный слой. Для примера, если вход является цветным изображением, то количество каналов для ввода должно быть 3. Если количество фильтров для сверточного слоя перед текущим слоем составляет 16, то количество каналов для этого слоя должно быть 16.

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

свернуть все

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

  • 'glorot' - Инициализируйте веса с помощью инициализатора Glorot [1] (также известного как инициализатор Xavier). Инициализатор Glorot независимо выбирает из равномерного распределения с нулем среднего и отклонением 2/(numIn + numOut), где numIn = filterSize(1)*filterSize(2)*filterSize(3)*NumChannels, numOut = filterSize(1)*filterSize(2)*filterSize(3)*numFilters, и NumChannels количество входа каналов.

  • 'he' - Инициализируйте веса с помощью инициализатора He [2]. Инициализатор He производит выборки из нормального распределения с нулем среднего и отклонением 2/numIn, где numIn = filterSize(1)*filterSize(2)*filterSize(3)*NumChannels и NumChannels количество входа каналов.

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

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

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

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

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

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

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

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

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

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

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

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

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

Веса слоев для транспонированного сверточного слоя, заданные как числовой массив.

Веса слоев являются настраиваемыми параметрами. Можно задать начальное значение для весов непосредственно с помощью Weights свойство слоя. При обучении сети, если Weights свойство слоя непусто, тогда trainNetwork использует Weights свойство как начальное значение. Если на Weights свойство пустое, тогда trainNetwork использует инициализатор, заданный как WeightsInitializer свойство слоя.

Во время обучения Weights является FilterSize(1)-by- FilterSize(2)-by- FilterSize(3)-by- numFilters-by- NumChannels массив.

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

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

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

Во время обучения Bias 1 на 1 на 1 numFilters массив.

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

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

свернуть все

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

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

Пример: 2

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

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

Пример: 2

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

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

Пример: 2

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

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

Пример: 2

Слой

свернуть все

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

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

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

свернуть все

Транспонированный 3-D слой свертки, возвращенный как TransposedConvolution3dLayer объект.

Ссылки

[1] Глорот, Ксавьер и Йошуа Бенгио. «Понимание сложности обучения нейронных сетей с глубоким Feedforward». В работе тринадцатой Международной конференции по искусственному интеллекту и статистике, 249-356. Сардиния, Италия: AISTATS, 2010.

[2] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. «Delving Deep Into Rectifiers: Overpassing Human-Level Performance on ImageNet Classification». В работе Международной конференции IEEE по компьютерному зрению 2015 года, 1026-1034. Вашингтон, округ Колумбия: IEEE Компьютерное Зрение Society, 2015.

Введенный в R2019a