dlconv

Свертка глубокого обучения

Описание

Операция свертки применяет скользящие фильтры к входным данным. Используйте 1D и 2D фильтры с разгруппированными или сгруппированными свертками и 3-D фильтры с разгруппированными свертками.

Используйте сгруппированную свертку в отделимом мудром каналом (также известный мудрой глубиной отделимый) свертка. Для каждой группы операция применяет операцию свертки к входу путем перемещения фильтров по пространственным измерениям входных данных, вычисления скалярного произведения весов и данных и добавления смещения. Если количество групп равно количеству каналов, то эта функция выполняет мудрую каналом свертку. Если количество групп равно 1, эта функция выполняет разгруппированную свертку.

Примечание

Эта функция применяет операцию свертки глубокого обучения к dlarray данные. Если вы хотите применить свертку в layerGraph объект или Layer массив, используйте один из следующих слоев:

пример

dlY = dlconv(dlX,weights,bias) вычисляет свертку глубокого обучения входа dlX использование скольжения сверточных фильтров задано weights, и добавляет постоянный bias. Вход dlX отформатированный dlarray с метками размерности. Свертка действует на размерности, которые вы задаете как 'S' размерности. Выход dlY отформатированный dlarray с той же размерностью помечает как dlX.

пример

dlY = dlconv(dlX,weights,bias,'DataFormat',FMT) также задает формат этикетки размерности FMT когда dlX не отформатированный dlarray. Выход dlY бесформатный dlarray с той же размерностью заказывают как dlX.

пример

dlY = dlconv(___Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Например, 'Stride',3 устанавливает шаг операции свертки.

Примеры

свернуть все

Примените операцию свертки ко всем каналам входа изображений с помощью одного фильтра.

Импортируйте данные изображения и преобразуйте их в dlarray.

X = imread('sherlock.jpg');
dlX = dlarray(single(X),'SSC');

Отобразите изображение.

imshow(X,'DisplayRange',[])

Инициализируйте сверточные фильтры. Задайте разгруппированную свертку, которая применяет один фильтр ко всем трем каналам входных данных.

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',2);

Отобразите изображение, к которому применяют операцию свертки.

Y = extractdata(dlY);
imshow(Y,'DisplayRange',[])

Примените операцию свертки к входным данным в трех группах из двух каналов каждый. Примените четыре фильтра на группу.

Создайте входные данные как десять наблюдений за размером 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,numChannelsPerGroup,numFiltersPerGroup,numGroups);

Инициализируйте срок смещения.

bias = rand(numFiltersPerGroup*numGroups,1);

Выполните свертку.

dlY = dlconv(dlX,weights,bias);
size(dlY)
dims(dlY)
ans = 1×4    
    93    93    12    10
ans = 'SSCB'

12 каналов свертки выход представляют три группы сверток с четырьмя фильтрами на группу.

Разделите входные данные на каналы и выполните свертку на каждом канале отдельно.

Создайте входные данные как одно наблюдение с размером 64 64 и десять каналов. Создайте данные как бесформатный dlarray.

height = 64;
width = 64;
channels = 10;

X = rand(height,width,channels);
dlX = dlarray(X);

Инициализируйте сверточные фильтры. Задайте разгруппированную свертку, которая применяет одну свертку ко всем трем каналам входных данных.

filterHeight = 8;
filterWidth = 8;
numChannelsPerGroup = 1;
numFiltersPerGroup = 1;
numGroups = channels;

weights = rand(filterHeight,filterWidth,numChannelsPerGroup,numFiltersPerGroup,numGroups);

Инициализируйте срок смещения.

bias = rand(numFiltersPerGroup*numGroups,1);

Выполните свертку. Задайте метки размерности входных данных с помощью 'DataFormat' опция.

dlY = dlconv(dlX,weights,bias,'DataFormat','SSC');
size(dlY)
ans = 1×3    
    57    57    10

К каждому каналу применяют операцию свертки отдельно, таким образом, существует десять каналов в выходе.

Входные параметры

свернуть все

Входные данные, заданные как dlarray с или без меток размерности или числового массива. Когда dlX не отформатированный dlarray, необходимо задать формат этикетки размерности с помощью 'DataFormat',FMT. Если dlX числовой массив, по крайней мере один из weights или bias должен быть dlarray.

Свертка действует на размерности, которые вы задаете как пространственные размерности с помощью 'S' метка размерности. Можно задать до трех измерений в dlX как 'S' размерности.

Типы данных: single | double

Сверточные фильтры, заданные как dlarray с или без меток или числового массива. weights аргумент задает размер и значения фильтров, а также количество фильтров и количество групп для сгруппированных сверток.

Задайте веса как filterSize- numChannelsPerGroup- numFiltersPerGroup- numGroups массив.

  • filterSize — Размер сверточных фильтров. filterSize может иметь до трех измерений, в зависимости от количества пространственных размерностей во входных данных.

    Входные данные 'S' РазмерностиfilterSize
    1Dh, где h соответствует высоте фильтра
    2D h-by-w, где h и w соответствуют высоте и ширине фильтра, соответственно
    3-Dh-by-w-by-d, где h, w и d соответствуют высоте, ширине и глубине фильтра, соответственно

  • numChannelsPerGroup — Количество каналов, чтобы применить операцию свертки в каждой группе. numChannelsPerGroup должен равняться количеству каналов во входных данных, разделенных на numGroups, количество групп. Для разгруппированных сверток, где numGroups = 1, numChannelsPerGroup должен равняться количеству каналов во входных данных.

  • numFiltersPerGroup — Количество фильтров, чтобы применяться в каждой группе.

  • numGroups — Количество (дополнительных) групп. Когда numGroups > 1, функция выполняет сгруппированные свертки. Сгруппированные свертки не поддержаны для входных данных больше чем с двумя 'S' размерности. Когда numGroups = 1, функция выполняет разгруппированные свертки; в этом случае эта размерность является одиночным элементом и может быть не использована.

Если weights отформатированный dlarray, это может иметь несколько пространственных размерностей, пометил 'S', одна размерность канала пометила 'C', и до двух других размерностей пометили 'U'. Количество 'S' размерности должны совпадать с количеством 'S' размерности входных данных. Помеченные размерности соответствуют спецификациям фильтра можно следующим образом.

Отфильтруйте спецификациюМетки размерности
filterSizeДо трех 'S' размерности
numChannelsPerGroup'C' размерность
numFiltersPerGroupПервый 'U' размерность
numGroups (дополнительный)Второй 'U' размерность

Типы данных: single | double

Смещение, постоянное, заданное как dlarray вектор или dlarray скаляр с или без меток, числового вектора или числового скаляра.

  • Если bias скаляр или имеет только одноэлементные размерности, то же смещение применяется к каждому выходу.

  • Если bias имеет неодноэлементную размерность, каждый элемент bias смещение, применился к соответствующему сверточному фильтру, заданному weights. Число элементов bias должен совпадать с количеством фильтров, заданных weights.

  • Если bias скалярный числовой массив со значением 0, срок смещения отключен, и никакое смещение не добавляется во время операции свертки.

Если bias отформатированный dlarray, неодноэлементная размерность должна быть размерностью канала, пометил 'C'.

Типы данных: single | double

Порядок размерности бесформатных входных данных, заданных как разделенная запятой пара, состоящая из '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.

Пример: 'DilationFactor',2 устанавливается коэффициент расширения для каждого сверточного фильтра к 2.

Размер шага для того, чтобы пересечь входные данные, заданные как разделенная запятой пара, состоящая из 'Stride' и числовой скаляр или числовой вектор. Если вы задаете 'Stride' как скаляр, то же значение используется во всех пространственных размерностях. Если вы задаете 'Stride' как вектор одного размера с количеством пространственных размерностей входных данных, векторные значения используются в соответствующих пространственных размерностях.

Значение по умолчанию 'Stride' 1.

Пример: 'Stride',3

Типы данных: single | double

Отфильтруйте фактор расширения, заданный как разделенная запятой пара, состоящая из 'DilationFactor' и одно из следующих.

  • Числовой скаляр — то же значение фактора расширения применяется для всех пространственных размерностей.

  • Числовой вектор — различное значение фактора расширения применяется по каждому пространственному измерению. Используйте вектор размера d, где d количество пространственных размерностей входных данных. iэлемент th вектора указывает, что фактор расширения применился к ith пространственная размерность.

Используйте фактор расширения, чтобы увеличить восприимчивое поле фильтра (область входа, который фильтр видит) на входных данных. Используя расширение фактор соответствует эффективному размеру фильтра filterSize + (filterSize-1)*(dilationFactor-1).

Пример: 'DilationFactor',2

Типы данных: single | double

Дополнение примененного ребра данных, заданных как разделенная запятой пара, состоящая из 'Padding' и одно из следующего:

  • 'same' — Дополнение установлено так, чтобы выходной размер совпал с входным размером, когда шагом является 1. В более общем плане выходным размером каждой пространственной размерности является ceil(inputSize/stride), где inputSize размер входа по пространственному измерению.

  • Числовой скаляр — то же дополнительное значение применяется к обоим концам всех пространственных размерностей.

  • Числовой вектор — различное дополнительное значение применяется по каждому пространственному измерению. Используйте вектор размера d, где d количество пространственных размерностей входных данных. iэлемент th вектора указывает, что дополнение применилось к запуску и концу вдоль ith пространственная размерность.

  • Числовая матрица — различное дополнительное значение применяется к запуску и концу каждой пространственной размерности. Используйте матрицу размера 2 d, где d количество пространственных размерностей входных данных. Элемент (1,d) указывает, что дополнение применилось к запуску пространственной размерности d. Элемент (2,d) задает дополнение, примененное в конец пространственной размерности d. Например, в 2D, форматом является [top, left; bottom, right].

Значение по умолчанию 'Padding' 0.

Пример: 'Padding','same'

Типы данных: single | double

Выходные аргументы

свернуть все

Карта функции, к которой применяют операцию свертки, возвращенная как dlarray. Выход dlY имеет тот же базовый тип данных как вход dlX.

Если входные данные dlX отформатированный dlarray, dlY имеет те же метки размерности как dlX. Если входными данными не является отформатированный dlarray, dlY бесформатный dlarray с той же размерностью заказывают как входные данные.

Размер 'C' размерность канала dlY зависит от размера weights входной параметр. Размер 'C' размерность выхода Y продукт размера размерностей numFiltersPerGroup и numGroups в weights аргумент. Если weights отформатированный dlarray, этот продукт совпадает с продуктом размера 'U' размерности.

Больше о

свернуть все

Свертка глубокого обучения

dlconv функция применяет скользящие фильтры свертки к пространственным размерностям входных данных. dlconv функционируйте свертка поддержек в один, два, или три пространственных размерности. Для получения дополнительной информации см. определение сверточного слоя на convolution2dLayer страница с описанием.

Расширенные возможности

Введенный в R2019b

Для просмотра документации необходимо авторизоваться на сайте