Глубокое обучение транспонировало свертку
Транспонированная операция свертки сверхдискретизировала карты функции.
Эта функция применяется, глубокое обучение транспонировало операцию свертки к 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'
значение 3
.
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) sizeY = size(Y) sizeZ = size(Z)
sizeX = 1×3 640 960 3 sizeY = 1×2 311 471 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) dims(dlY)
ans = 1×4 107 107 12 10 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
FMT
— Порядок размерности неформатированных данныхПорядок размерности бесформатных входных данных, заданных как разделенная запятой пара, состоящая из 'DataFormat'
и символьный массив или строка, которая обеспечивает метку для каждой размерности данных. Каждый символ в FMT
должно быть одно из следующего:
'S'
— Пространственный
'C'
— Канал
'B'
— Пакет (например, выборки и наблюдения)
'T'
— Время (например, последовательности)
'U'
— Незаданный
Можно указать, что несколько размерностей пометили 'S'
или 'U'
. Можно использовать, маркирует 'C'
B
, или 'T'
самое большее однажды.
Необходимо задать 'DataFormat'
когда входные данные dlX
бесформатный dlarray
.
Пример: 'DataFormat','SSCB'
Типы данных: char |
string
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Stride',2
устанавливает шаг каждого фильтра к 2.'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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.