Глубокое обучение транспонировало свертку
Транспонированная операция свертки сверхдискретизировала карты функции.
Эта функция применяется, глубокое обучение транспонировало операцию свертки к dlarray
данные. Если вы хотите применить транспонированную свертку в layerGraph
объект или Layer
массив, используйте один из следующих слоев:
вычисляет транспонированную свертку глубокого обучения входа dlY
= dltranspconv(dlX
,weights
,bias
)dlX
использование фильтров задано weights
, и добавляет постоянный bias
. Вход dlX
отформатированный dlarray
с метками размерности. Транспонированная свертка действует на размерности, которые вы задаете как 'S'
и 'C'
размерности. Выход dlY
отформатированный dlarray
с той же размерностью помечает как dlX
.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Например, dlY
= dltranspconv(___Name,Value
)'Stride',3
устанавливает шаг операции свертки.
Примените операцию свертки к изображению и затем используйте транспонированную свертку, чтобы изменить размер изображения, к которому применяют операцию свертки, к тому же размеру как оригинальное изображение.
Импортируйте данные изображения и преобразуйте их в dlarray
.
X = imread('sherlock.jpg'); dlX = dlarray(single(X),'SSC');
Отобразите изображение.
imshow(X)
Инициализируйте сверточные фильтры и сместите термин. Задайте разгруппированную свертку, которая применяет один фильтр ко всем трем каналам входных данных.
filterHeight = 10; filterWidth = 10; numChannelsPerGroup = 3; numFiltersPerGroup = 1; numGroups = 1; weights = rand(filterHeight,filterWidth,numChannelsPerGroup,numFiltersPerGroup,numGroups); bias = rand(numFiltersPerGroup*numGroups,1);
Выполните свертку. Используйте 'Stride'
значение 2
и 'DilationFactor'
значение 2
.
dlY = dlconv(dlX,weights,bias,'Stride',2,'DilationFactor',3);
Отобразите изображение, к которому применяют операцию свертки.
Y = extractdata(dlY); imshow(rescale(Y))
Инициализируйте транспонированные сверточные фильтры и смещение. Задайте разгруппированную транспонированную свертку, которая применяет три фильтра к входу. Используйте ту же высоту фильтра и отфильтруйте ширину что касается операции свертки.
numChannelsPerGroupTC = 1; numFiltersPerGroupTC = 3; weightsTC = rand(filterHeight,filterWidth,numFiltersPerGroupTC,numChannelsPerGroupTC,numGroups); biasTC = rand(numFiltersPerGroupTC*numGroups,1);
Выполните транспонированную свертку. Используйте тот же шаг и коэффициент расширения что касается операции свертки.
dlZ = dltranspconv(dlY,weightsTC,biasTC,'Stride',2,'DilationFactor',3);
Отобразите изображение после транспонированной свертки.
Z = extractdata(dlZ); imshow(rescale(Z))
Сравните размер оригинального изображения, изображения, к которому применяют операцию свертки и изображения после транспонированной свертки.
sizeX = size(X)
sizeX = 1×3
640 960 3
sizeY = size(Y)
sizeY = 1×2
307 467
sizeZ = size(Z)
sizeZ = 1×3
640 960 3
Транспонированная свертка сверхдискретизировала данные, к которым применяют операцию свертки, к размеру исходных входных данных.
Примените транспонированную свертку к входным данным в трех группах из двух каналов каждый. Примените четыре фильтра на группу.
Создайте входные данные как десять наблюдений за размером 100 100 с шестью каналами.
height = 100;
width = 100;
channels = 6;
numObservations = 10;
X = rand(height,width,channels,numObservations);
dlX = dlarray(X,'SSCB');
Инициализируйте фильтры для транспонированной операции свертки. Задайте три группы транспонированных сверток, что каждый применяет четыре фильтра к двум каналам входных данных.
filterHeight = 8; filterWidth = 8; numChannelsPerGroup = 2; numFiltersPerGroup = 4; numGroups = 3; weights = rand(filterHeight,filterWidth,numFiltersPerGroup,numChannelsPerGroup,numGroups);
Инициализируйте срок смещения.
bias = rand(numFiltersPerGroup*numGroups,1);
Выполните транспонированную свертку.
dlY = dltranspconv(dlX,weights,bias); size(dlY)
ans = 1×4
107 107 12 10
dims(dlY)
ans = 'SSCB'
12 каналов свертки выход представляют три группы транспонированных сверток с четырьмя фильтрами на группу.
dlX
— Входные данныеdlarray
| числовой массивВходные данные в виде dlarray
с или без меток размерности или числового массива. Когда dlX
не отформатированный dlarray
, необходимо задать формат этикетки размерности с помощью 'DataFormat',FMT
. Если dlX
числовой массив, по крайней мере один из weights
или bias
должен быть dlarray
.
Свертка действует на размерности, которые вы задаете как пространственные размерности с помощью 'S'
метка размерности. Можно задать до трех измерений в dlX
как 'S'
размерности.
Типы данных: single
| double
weights
— Фильтрыdlarray
| числовой массивФильтры в виде dlarray
с или без меток или числового массива. weights
аргумент задает размер и значения фильтров, а также количество фильтров и количество групп для сгруппированных транспонированных сверток.
Задайте веса как filterSize
- numFiltersPerGroup
- numChannelsPerGroup
- numGroups
массив.
filterSize
— Размер сверточных фильтров. filterSize
может иметь до трех измерений, в зависимости от количества пространственных размерностей во входных данных.
Входные данные 'S' Размерности | filterSize |
---|---|
1D | h, где h соответствует высоте фильтра |
2D | h-by-w, где h и w соответствуют высоте и ширине фильтра, соответственно |
3-D | h-by-w-by-d, где h, w и d соответствуют высоте, ширине и глубине фильтра, соответственно |
numFiltersPerGroup
— Количество фильтров, чтобы применяться в каждой группе.
numChannelsPerGroup
— Количество каналов в каждой группе для сгруппированных транспонированных сверток. numChannelsPerGroup
должен равняться количеству каналов во входных данных, разделенных на numGroups
, количество групп. Для разгруппированных сверток, где numGroups = 1
, numChannelsPerGroup
должен равняться количеству каналов во входных данных.
numGroups
— Количество (дополнительных) групп. Когда numGroups > 1
, функция выполняет сгруппированные транспонированные свертки. Когда numGroups = 1
, функция выполняет разгруппированные транспонированные свертки; в этом случае эта размерность является одиночным элементом и может быть не использована.
Если weights
отформатированный dlarray
, это может иметь несколько пространственных размерностей, пометил 'S'
, одна размерность канала пометила 'C'
, и до двух других размерностей пометили 'U'
. Количество 'S'
размерности должны совпадать с количеством 'S'
размерности входных данных. Помеченные размерности соответствуют техническим требованиям фильтра можно следующим образом.
Отфильтруйте спецификацию | Метки размерности |
---|---|
filterSize | До трех 'S' размерности |
numFiltersPerGroup | 'C' размерность |
numChannelsPerGroup | Первый 'U' размерность |
numGroups (дополнительный) | Второй 'U' размерность |
Типы данных: single
| double
bias
— Постоянное смещениеdlarray
вектор | dlarray
скаляр | числовой вектор | числовой скалярСмещение, постоянное в виде dlarray
вектор или dlarray
скаляр с или без меток, числового вектора или числового скаляра.
Если bias
скаляр или имеет только одноэлементные размерности, то же смещение применяется к каждой записи выхода.
Если bias
имеет неодноэлементную размерность, каждый элемент bias
смещение, применился к соответствующему сверточному фильтру, заданному weights
. Число элементов bias
должен совпадать с количеством фильтров, заданных weights
.
Если bias
отформатированный dlarray
, неодноэлементная размерность должна быть размерностью канала, пометил 'C'
.
Типы данных: single
| double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Stride',2
устанавливает шаг каждого фильтра к 2.'DataFormat'
— Порядок размерности неформатированных данныхПорядок размерности бесформатных входных данных в виде разделенной запятой пары, состоящей из 'DataFormat'
и символьный массив или строка FMT
это обеспечивает метку для каждой размерности данных. Каждый символ в FMT
должно быть одно из следующего:
'S'
— Пространственный
'C'
— Канал
'B'
— Пакет (например, выборки и наблюдения)
'T'
— Время (например, последовательности)
'U'
— Незаданный
Можно указать, что несколько размерностей пометили 'S'
или 'U'
. Можно использовать, маркирует 'C'
B
, и 'T'
самое большее однажды.
Необходимо задать 'DataFormat'
когда входные данные dlX
не отформатированный dlarray
.
Пример: 'DataFormat','SSCB'
Типы данных: char |
string
'Stride'
— Размер шага для того, чтобы пересечь входные данныеРазмер шага для того, чтобы пересечь входные данные в виде разделенной запятой пары, состоящей из 'Stride'
и числовой скаляр или числовой вектор. Если вы задаете 'Stride'
как скаляр, то же значение используется во всех пространственных размерностях. Если вы задаете 'Stride'
как вектор одного размера с количеством пространственных размерностей входных данных, векторные значения используются в соответствующих пространственных размерностях.
Значение по умолчанию 'Stride'
1
.
Пример: 'Stride',3
Типы данных: single
| double
'DilationFactor'
— Отфильтруйте коэффициент расширенияОтфильтруйте коэффициент расширения в виде разделенной запятой пары, состоящей из 'DilationFactor'
и одно из следующих.
Числовой скаляр — то же значение коэффициента расширения применяется для всех пространственных размерностей.
Числовой вектор — различное значение коэффициента расширения применяется по каждому пространственному измерению. Используйте вектор размера d
, где d
количество пространственных размерностей входных данных. i
элемент th вектора указывает, что коэффициент расширения применился к i
th пространственная размерность.
Используйте коэффициент расширения, чтобы увеличить восприимчивое поле фильтра (область входа, который фильтр видит) на входных данных. Используя коэффициент расширения соответствует эффективному размеру фильтра filterSize + (filterSize-1)*(dilationFactor-1)
.
Пример: 'DilationFactor',2
Типы данных: single
| double
'Cropping'
— Обрезка применилась к ребрам данных'same'
| числовой скаляр | числовой вектор | числовая матрицаОбрезка примененного ребра данных в виде разделенной запятой пары, состоящей из 'Cropping'
и одно из следующих.
'same'
— Обрезка установлена так, чтобы выходной размер совпал с входным размером, когда шагом является 1
. В более общем плане выходным размером каждой пространственной размерности является inputSize*stride
, где inputSize
размер входа по пространственному измерению.
Числовой скаляр — то же значение обрезки применяется к обоим концам всех пространственных размерностей.
Числовой вектор — различное значение обрезки применяется по каждому пространственному измерению. Используйте вектор размера d
, где d
количество пространственных размерностей входных данных. i
элемент th вектора указывает, что обрезка применилась к запуску и концу вдоль i
th пространственная размерность.
Числовая матрица — различное значение обрезки применяется к началу и концу каждой пространственной размерности. Используйте матрицу размера 2 d
, где d
количество пространственных размерностей входных данных. Элемент (1,d)
указывает, что обрезка применилась к запуску пространственной размерности d
. Элемент (2,d)
задает обрезку, примененную в конец пространственной размерности d
. Например, в 2D форматом является [top, left; bottom, right]
.
Пример: 'Cropping','same'
Типы данных: single
| double
dlY
— Покажите картуdlarray
Покажите карту, возвращенную как dlarray
. Выход dlY
имеет тот же базовый тип данных как вход dlX
.
Если входные данные dlX
отформатированный dlarray
, dlY
имеет те же метки размерности как dlX
. Если входными данными не является отформатированный dlarray
, dlY
бесформатный dlarray
или числовой массив с той же размерностью заказывает как входные данные.
Размер 'C'
размерность канала dlY
зависит от размера weights
входной параметр. Размер 'C'
размерность выхода Y
продукт размера размерностей numFiltersPerGroup
и numGroups
в weights
аргумент. Если weights
отформатированный dlarray
, этот продукт совпадает с продуктом размера 'C'
размерность и второй 'U'
размерность.
Указания и ограничения по применению:
Когда по крайней мере одним из следующих входных параметров является gpuArray
или dlarray
с базовыми данными типа gpuArray
, эта функция работает на графическом процессоре.
dlX
weights
bias
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.