Свертка с транспонированным глубоким обучением
Транспонированная операция свертки увеличивает число карт элементов.
Примечание
Эта функция применяет операцию свертки с транспонированным глубоким обучением к 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 |
|---|---|
| 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 имеет nonsingleton размерность, каждый элемент bias - смещение, применяемое к соответствующему сверточному фильтру, указанному weights. Количество элементов bias должно соответствовать количеству фильтров, указанному в weights.
Если bias является отформатированным dlarray, размер nonsingleton должен быть размером канала с меткой '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 - количество пространственных измерений входных данных. i-й элемент вектора определяет коэффициент расширения, применяемый к i-й пространственный размер.
Используйте коэффициент расширения для увеличения поля приема фильтра (области ввода, которую фильтр может видеть) на входных данных. Использование коэффициента расширения соответствует эффективному размеру фильтра filterSize + (filterSize-1)*(dilationFactor-1).
Пример: 'DilationFactor',2
Типы данных: single | double
'Cropping' - Обрезка, применяемая к краям данных'same' | числовой скаляр | числовой вектор | числовая матрицаОбрезка, применяемая к краям данных, заданная как разделенная запятыми пара, состоящая из 'Cropping' и одно из следующих.
'same' - Обрезка задается таким образом, чтобы размер выходного сигнала совпадал с размером входного сигнала, когда шаг 1. В более общем случае выходной размер каждого пространственного измерения равен inputSize*stride, где inputSize - размер входного сигнала вдоль пространственного размера.
Числовой скаляр - одинаковое значение обрезки применяется к обоим концам всех пространственных размеров.
Числовой вектор - для каждого пространственного размера применяется различное значение обрезки. Использовать вектор размера d, где d - количество пространственных измерений входных данных. i-й элемент вектора определяет обрезку, применяемую к началу и концу вдоль i-й пространственный размер.
Числовая матрица - к началу и концу каждого пространственного размера применяется различное значение обрезки. Использовать матрицу размера 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, эта функция выполняется на GPU.
dlX
weights
bias
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.