Глубокое обучение транспонировало свертку
Операция транспонированной свертки повышает качество карты функций.
Примечание
Эта функция применяет операцию транспонированной свертки глубокого обучения к 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 i
th элемент вектора задает коэффициент расширения, применяемый к i
2ая пространственная размерность.
Используйте коэффициент расширения, чтобы увеличить восприимчивое поле фильтра (область входов, которые может видеть фильтр) на входных данных. Использование коэффициента расширения соответствует эффективному размеру фильтра filterSize + (filterSize-1)*(dilationFactor-1)
.
Пример: 'DilationFactor',2
Типы данных: single
| double
'Cropping'
- Обрезка, примененная к ребрам данных'same'
| числовой скаляр | числовой вектор | числовая матрицаОбрезка, примененная к ребрам данных, задается как разделенная разделенными запятой парами, состоящая из 'Cropping'
и одно из следующих.
'same'
- Обрезка устанавливается так, чтобы размер выходного сигнала был таким же, как и размер входа, когда полоска 1
. В более общем случае выходной размер каждой пространственной размерности inputSize*stride
, где inputSize
- размер входа по пространственной размерности.
Числовой скаляр - одно и то же значение обрезки применяется к обоим концам всех пространственных размерностей.
Числовой вектор - различное значение обрезки применяется вдоль каждой пространственной размерности. Используйте вектор размера d
, где d
- количество пространственных размерностей входных данных. The i
th элемент вектора задает обрезку, примененную к началу и концу вдоль i
2ая пространственная размерность.
Числовая матрица - различное значение обрезки применяется к началу и концу каждой пространственной размерности. Используйте матрицу размера 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.