Глубокое обучение транспонировало свертку
Операция транспонированной свертки повышает качество карты функций.
Примечание
Эта функция применяет операцию транспонированной свертки глубокого обучения к 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 и a '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 с метками или числовым массивом или без них. The weights аргумент задает размер и значения фильтров, а также количество фильтров и количество групп для сгруппированных транспонированных сверток.
Задайте веса как filterSize-by- numFiltersPerGroup-by- numChannelsPerGroup-by- numGroups массив.
filterSize - Размер сверточных фильтров. filterSize может иметь до три размерности, в зависимости от количества пространственных размерностей в входных данных.
Входные данные 'S' Размерности | filterSize |
|---|---|
| 1-D | h, где h соответствует высоте фильтра |
| 2-D | 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 который обеспечивает метку для каждой размерности данных.
При указании формата dlarray объект, каждый символ предоставляет метку для каждой размерности данных и должен быть одним из следующих:
'S' - Пространственный
'C' - Канал
'B' - Партия (например, выборки и наблюдения)
'T' - Время (например, временные шаги последовательностей)
'U' - Не определено
Можно задать несколько размерности, маркированных 'S' или 'U'. Можно использовать метки 'C', 'B', и 'T' самое большее сразу.
Вы должны задать 'DataFormat' когда входные данные не являются форматированным dlarray.
Пример: 'DataFormat','SSCB'
Типы данных: char | string
'Stride' - Размер шага для обхода входных данных1 (по умолчанию) | числовой скаляр | числовой векторРазмер шага для прохождения входных данных, заданный как разделенная разделенными запятой парами, состоящая из 'Stride' и числовой скаляр или числовой вектор. Если вы задаете 'Stride' в качестве скаляра то же значение используется для всех пространственных размерностей. Если вы задаете 'Stride' в качестве вектора того же размера, что и количество пространственных размерностей входных данных, векторные значения используются для соответствующих пространственных размерностей.
Значение по умолчанию 'Stride' является 1.
Пример: 'Stride',3
Типы данных: single | double
'DilationFactor' - Коэффициент расширения фильтра1 (по умолчанию) | числовой скаляр | числовой векторКоэффициент расширения фильтра, заданный как разделенная разделенными запятой парами, состоящая из 'DilationFactor' и одно из следующих.
Числовой скаляр - то же значение коэффициента расширения применяется для всех пространственных размерностей.
Числовой вектор - различное значение коэффициента расширения применяется вдоль каждой пространственной размерности. Используйте вектор размера d, где d - количество пространственных размерностей входных данных. The ith элемент вектора задает коэффициент расширения, применяемый к i2ая пространственная размерность.
Используйте коэффициент расширения, чтобы увеличить восприимчивое поле фильтра (область входов, которые может видеть фильтр) на входных данных. Использование коэффициента расширения соответствует эффективному размеру фильтра filterSize + (filterSize-1)*(dilationFactor-1).
Пример: 'DilationFactor',2
Типы данных: single | double
'Cropping' - Обрезка, примененная к ребрам данных'same' | числовой скаляр | числовой вектор | числовая матрицаОбрезка, примененная к ребрам данных, задается как разделенная разделенными запятой парами, состоящая из 'Cropping' и одно из следующих.
'same' - Обрезка устанавливается так, чтобы размер выходного сигнала был таким же, как и размер входа, когда полоска 1. В более общем случае выходной размер каждой пространственной размерности inputSize*stride, где inputSize - размер входа по пространственной размерности.
Числовой скаляр - одно и то же значение обрезки применяется к обоим концам всех пространственных размерностей.
Числовой вектор - различное значение обрезки применяется вдоль каждой пространственной размерности. Используйте вектор размера d, где d - количество пространственных размерностей входных данных. The ith элемент вектора задает обрезку, примененную к началу и концу вдоль i2ая пространственная размерность.
Числовая матрица - различное значение обрезки применяется к началу и концу каждой пространственной размерности. Используйте матрицу размера 2-by- d, где d - количество пространственных размерностей входных данных. Элемент (1,d) задает обрезку, примененную к началу пространственной размерности d. Элемент (2,d) задает обрезку, примененную к концу пространственной размерности d. Например, в 2-D формат [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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.