TransposedConvolution2DLayer

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

Описание

Транспонированный 2D слой свертки сверхдискретизировал карты функции.

Этот слой иногда неправильно известен как "развертку" или "deconv" слой. Этот слой является транспонированием свертки и не выполняет развертку.

Создание

Создайте транспонированную свертку 2D выходной слой с помощью transposedConv2dLayer.

Свойства

развернуть все

Транспонированная свертка

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

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

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

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

Пример: 96

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

Пример: [2 3] задает вертикальный размер шага 2 и горизонтальный размер шага 3.

Метод, чтобы определить размер обрезки, заданный как 'manual' или то же самое.

Программное обеспечение автоматически устанавливает значение CroppingMode на основе значения 'Cropping', которое вы задаете при создании слоя.

  • Если вы устанавливаете опцию 'Cropping' на числовое значение, то программное обеспечение автоматически устанавливает свойство CroppingMode слоя к 'manual'.

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

Чтобы задать размер обрезки, используйте опцию 'Cropping' transposedConv2dLayer.

Выведите сокращение размера, заданное как вектор четырех неотрицательных целых чисел [t b l r], где t, b, l, r является суммами, чтобы обрезать от верхней части, нижней части, оставленной, и право, соответственно.

Чтобы задать размер обрезки вручную, используйте опцию 'Cropping' transposedConv2dLayer.

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

Примечание

Свойство Cropping будет удалено в будущем релизе. Используйте CroppingSize вместо этого. Чтобы задать размер обрезки вручную, используйте опцию 'Cropping' transposedConv2dLayer.

Выведите сокращение размера, заданное как вектор двух неотрицательных целых чисел [a b], откуда a соответствует обрезке верха и низа, и b соответствует обрезке слева и праву.

Чтобы задать размер обрезки вручную, используйте опцию 'Cropping' transposedConv2dLayer.

Пример: [0 1]

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

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

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

Функция, чтобы инициализировать веса, заданные как одно из следующего:

  • 'glorot' – Инициализируйте веса с инициализатором Glorot [1] (также известный как инициализатор Ксавьера). Инициализатор Glorot независимо выборки от равномерного распределения с нулевым средним значением и отклонением 2/(numIn + numOut), где numIn = FilterSize(1)*FilterSize(2)*NumChannels и numOut = FilterSize(1)*FilterSize(2)*NumFilters.

  • 'he' – Инициализируйте веса с Ним инициализатор [2]. Он выборки инициализатора от нормального распределения с нулевым средним значением и отклонением 2/numIn, где numIn = FilterSize(1)*FilterSize(2)*NumChannels.

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

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

  • единицы Инициализируйте веса с единицами.

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

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

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

Функция, чтобы инициализировать смещение, заданное как одно из следующего:

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

  • единицы Инициализируйте смещение с единицами.

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

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

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

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

Веса слоя для сверточного слоя, заданного как FilterSize(1)-by-FilterSize(2)-by-NumFilters-by-NumChannels массив.

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

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

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

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

В учебное время Bias является 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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

layer = transposedConv2dLayer(11,96,'Stride',4);

Вопросы совместимости

развернуть все

Поведение изменяется в R2019a

Не рекомендуемый запуск в R2019a

Ссылки

[1] Glorot, Ксавьер и Иосуа Бенхио. "Понимая трудность учебных глубоких feedforward нейронных сетей". В Продолжениях тринадцатой международной конференции по вопросам искусственного интеллекта и статистики, стр 249-256. 2010.

[2] Он, Kaiming, Сянюй Чжан, Шаоцин Жэнь и Цзянь Сунь. "Копаясь глубоко в выпрямителях: Превосходная производительность человеческого уровня на imagenet классификации". В Продолжениях международной конференции IEEE по вопросам компьютерного зрения, стр 1026-1034. 2015.

Введенный в R2017b