Глубокий учебный сверток
Операция свертки применяет скользящие фильтры к входным данным. Используйте dlconv функция для свертки глубокого обучения, свертки с группировкой и свертки с разделением по каналам.
dlconv функция применяет операцию свертки глубокого обучения к dlarray данные. Используя dlarray объекты упрощают работу с высокоразмерными данными, позволяя маркировать размеры. Например, можно пометить, какие измерения соответствуют пространственным, временным, канальным и пакетным измерениям, используя 'S', 'T', 'C', и 'B' соответственно. Для неуказанных и других размеров используйте 'U' этикетка. Для dlarray функции объекта, которые работают над определенными размерами, можно указать метки размеров, отформатировав dlarray непосредственно или с помощью 'DataFormat' вариант.
Примечание
Применение свертки в пределах layerGraph объект или Layer используйте один из следующих слоев:
применяет операцию свертки глубокого обучения к отформатированному dlY = dlconv(dlX,weights,bias)dlarray объект dlX. Функция использует скользящие сверточные фильтры, определяемые weights и добавляет константу bias. Продукция dlY является отформатированным dlarray объект с тем же форматом, что и dlX.
Функция по умолчанию свертывает до трех измерений dlX маркированный 'S' (пространственный). Свернуть поверх размеров с меткой 'T' (время), указать weights с 'T' размер с использованием форматированного dlarray или с помощью 'WeightsFormat' вариант.
Для неформатированных входных данных используйте 'DataFormat' вариант.
применяет операцию свертки глубокого обучения к неформатированным dlY = dlconv(dlX,weights,bias,'DataFormat',FMT)dlarray объект dlX с форматом, указанным FMT с использованием любого из предыдущих синтаксисов. Продукция dlY является неформатированным dlarray объект с размерами в том же порядке, что и dlX. Например, 'DataFormat','SSCB' задает данные для свёртки 2-D с форматом 'SSCB' (пространственный, пространственный, канальный, пакетный).
задает параметры, использующие один или несколько аргументов пары имя-значение, используя любой из предыдущих синтаксисов. Например, dlY = dlconv(___,Name,Value)'WeightsFormat','TCU' задает веса для свёртки 1-D с форматом 'TCU' (время, канал, не указано).
Создание форматированного dlarray объект, содержащий партию 128 изображений 28 на 28 с 3 каналами. Укажите формат 'SSCB' (пространственный, пространственный, канальный, пакетный).
miniBatchSize = 128;
inputSize = [28 28];
numChannels = 3;
X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);
dlX = dlarray(X,'SSCB');Просмотр размера и формата входных данных.
size(dlX)
ans = 1×4
28 28 3 128
dims(dlX)
ans = 'SSCB'
Инициализируйте веса и смещение для 2-D свертки. Для весов укажите 64 фильтра 3 на 3. Для смещения укажите вектор нулей.
filterSize = [3 3]; numFilters = 64; weights = rand(filterSize(1),filterSize(2),numChannels,numFilters); bias = zeros(1,numFilters);
Применить свертку 2-D используя dlconv функция.
dlY = dlconv(dlX,weights,bias);
Просмотр размера и формата выходных данных.
size(dlY)
ans = 1×4
26 26 64 128
dims(dlY)
ans = 'SSCB'
Сверните входные данные в три группы по два канала каждая. Примените четыре фильтра для каждой группы.
Создайте входные данные как 10 наблюдений размером 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)
ans = 1×4
93 93 12 10
dims(dlY)
ans = 'SSCB'
12 каналов вывода свертки представляют три группы сверток с четырьмя фильтрами на группу.
Разделите входные данные на каналы и выполните свертку по каждому каналу отдельно.
Создайте входные данные как одно наблюдение размером 64 на 64 и 10 каналов. Создать данные как неформатированные 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
Каждый канал свернут отдельно, поэтому на выходе имеется 10 каналов.
Создание форматированного dlarray объект, содержащий 128 последовательностей длиной 512, содержащих 5 признаков. Укажите формат 'CBT' (канал, партия, время).
numChannels = 5;
miniBatchSize = 128;
sequenceLength = 512;
X = rand(numChannels,miniBatchSize,sequenceLength);
dlX = dlarray(X,'CBT');Инициализируйте веса и смещение для 1-D свертки. Для весов укажите 64 фильтра с размером фильтра 3. Для смещения укажите вектор нулей.
filterSize = 3; numFilters = 64; weights = rand(filterSize,numChannels,numFilters); bias = zeros(1,numFilters);
Применить свертку 1-D используя dlconv функция. Чтобы свернуться над 'T' (время) измерения входных данных, укажите формат весов 'TCU' (время, канал, не указано) с помощью 'WeightsFormat' вариант.
dlY = dlconv(dlX,weights,bias,'WeightsFormat','TCU');
Просмотр размера и формата выходных данных.
size(dlY)
ans = 1×3
64 128 510
dims(dlY)
ans = 'CBT'
dlX - Входные данныеdlarray | числовой массивВходные данные, указанные как отформатированные dlarray, неформатированный dlarrayили числовой массив.
Если dlX является неформатированным dlarray или числовой массив, то необходимо указать формат с помощью 'DataFormat' вариант. Если dlX является числовым массивом, то weights или bias должно быть dlarray объект.
Функция по умолчанию свертывает до трех измерений dlX маркированный 'S' (пространственный). Свернуть поверх размеров с меткой 'T' (время), указать weights с 'T' размер с использованием форматированного dlarray или с помощью 'WeightsFormat' вариант.
weights - Сверточные фильтрыdlarray | числовой массивСверточные фильтры, указанные как отформатированные dlarray, неформатированный dlarrayили числовой массив.
Размер и формат весов зависит от типа задачи. Если weights является неформатированным dlarray или числовой массив, то размер и форма weights зависит от 'WeightsFormat' вариант.
В следующей таблице описаны размеры и формат весов для различных задач. Можно задать массив с размерами в любом порядке с помощью форматирования dlarray объектов или с помощью 'WeightsFormat' вариант. Если веса имеют несколько размеров с одной и той же меткой (например, несколько размеров с меткой 'S'), то эти размеры должны быть упорядочены, как описано в этой таблице.
| Задача | Требуемые размеры | Размер | Пример | |
|---|---|---|---|---|
| Веса | Формат | |||
| 1-D свёртка | 'S' (пространственный) или 'T' (время) | Размер фильтра |
| 'SCU' (пространственный, канальный, не указан) |
'C' (канал) | Количество каналов | |||
'U' (не указано) | Количество фильтров | |||
| 1-D групповая свертка | 'S' (пространственный) или 'T' (время) | Размер фильтра |
| 'SCUU' (пространственный, канальный, не указан, не указан) |
'C' (канал) | Количество каналов в группе | |||
Сначала 'U' (не указано) | Количество фильтров в группе | |||
Второй 'U' (не указано) | Количество групп | |||
| 2-D свёртка | Сначала 'S' (пространственный) | Высота фильтра |
| 'SSCU' (пространственный, пространственный, канальный, не указан) |
Второй 'S' (пространственный) или 'T' (время) | Ширина фильтра | |||
'C' (канал) | Количество каналов | |||
'U' (не указано) | Количество фильтров | |||
| 2-D групповая свертка | Сначала 'S' (пространственный) | Высота фильтра |
| 'SSCUU' (пространственный, пространственный, канальный, неуточненный, неуточненный) |
Второй 'S' (пространственный) или 'T' (время) | Ширина фильтра | |||
'C' (канал) | Количество каналов в группе | |||
Сначала 'U' (не указано) | Количество фильтров в группе | |||
Второй 'U' (не указано) | Количество групп | |||
| 3-D свёртка | Сначала 'S' (пространственный) | Высота фильтра |
| 'SSSCU' (пространственный, пространственный, пространственный, канальный, неуточненный) |
Второй 'S' (пространственный) | Ширина фильтра | |||
Треть 'S' (пространственный) или 'T' (время) | Глубина фильтра | |||
'C' (канал) | Количество каналов | |||
'U' (не указано) | Количество фильтров | |||
Для разделяемой по каналам (также известной как разделяемая по глубине) свёртки используйте сгруппированную свёртку с числом групп, равным числу каналов.
Совет
Функция по умолчанию свертывает до трех измерений dlX маркированный 'S' (пространственный). Свернуть поверх размеров с меткой 'T' (время), указать weights с 'T' размер с использованием форматированного dlarray или с помощью 'WeightsFormat' вариант.
bias - Постоянная смещенияdlarray | числовой вектор | числовой скалярКонстанта смещения, заданная как отформатированная dlarray, неформатированный dlarray, числовой вектор или числовой скаляр.
Если bias является скаляром, то же смещение применяется к каждому выходу.
Если bias имеет nonsingleton размерность, то каждый элемент bias - смещение, применяемое к соответствующему сверточному фильтру, указанному weights. Количество элементов bias должно соответствовать количеству фильтров, указанному в weights.
Если bias является 0, то член смещения отключается, и никакого смещения не добавляется во время операции свертки.
Если bias является отформатированным dlarray, то размер nonsingleton должен быть размером канала с меткой 'C' (канал).
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'DilationFactor',2 устанавливает коэффициент расширения для каждого сверточного фильтра равным 2.'DataFormat' - Порядок измерения неформатированных данныхРазмерный порядок неформатированных входных данных, указанный как разделенная запятыми пара, состоящая из 'DataFormat' и вектор символов или строковый скаляр FMT с меткой для каждого измерения данных.
При указании формата dlarray каждый символ обеспечивает метку для каждого измерения данных и должен быть одним из следующих:
'S' - Пространственный
'C' - Канал
'B' - Партия (например, пробы и наблюдения)
'T' - Время (например, временные шаги последовательностей)
'U' - Не указано
Можно указать несколько размеров с метками 'S' или 'U'. Можно использовать метки 'C', 'B', и 'T' максимум один раз.
Необходимо указать 'DataFormat' если входные данные не являются отформатированными dlarray.
Пример: 'DataFormat','SSCB'
Типы данных: char | string
'WeightsFormat' - Порядок размеров весовПорядок размеров весов, указанный как разделенная запятыми пара, состоящая из 'WeightsFormat' и вектор символов или строковый скаляр, который обеспечивает метку для каждого измерения весов.
Значение по умолчанию 'WeightsFormat' зависит от задачи:
| Задача | Дефолт |
|---|---|
| 1-D свёртка | 'SCU' (пространственный, канальный, не указан) |
| 1-D групповая свертка | 'SCUU' (пространственный, канальный, не указан, не указан) |
| 2-D свёртка | 'SSCU' (пространственный, пространственный, канальный, не указан) |
| 2-D групповая свертка | 'SSCUU' (пространственный, пространственный, канальный, неуточненный, неуточненный) |
| 3-D свёртка | 'SSSCU' (пространственный, пространственный, пространственный, канальный, неуточненный) |
Поддерживаемые комбинации меток размеров зависят от типа свертки, для получения дополнительной информации см. weights аргумент.
Совет
Функция по умолчанию свертывает до трех измерений dlX маркированный 'S' (пространственный). Свернуть поверх размеров с меткой 'T' (время), указать weights с 'T' размер с использованием форматированного dlarray или с помощью 'WeightsFormat' вариант.
Пример: 'WeightsFormat','TCU'
'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
'Padding' - Размер заполнения, применяемого к краям данных0 (по умолчанию) | 'same' | числовой скаляр | числовой вектор | числовая матрицаРазмер заполнения, применяемого к краям данных, определяемый как разделенная запятыми пара, состоящая из 'Padding' и одно из следующих:
'same' - Размер заполнения устанавливается таким образом, чтобы выходной размер совпадал с входным размером, когда шаг 1. В более общем случае выходной размер каждого пространственного измерения равен ceil(inputSize/stride), где inputSize - размер входного сигнала вдоль пространственного размера.
Числовой скаляр - одинаковая величина заполнения применяется к обоим концам всех пространственных размеров.
Числовой вектор - вдоль каждого пространственного размера применяется различная величина заполнения. Использовать вектор размера d, где d - количество пространственных измерений входных данных. i-й элемент вектора определяет размер заполнения, применяемого к началу и концу вдоль i-й пространственный размер.
Числовая матрица - к началу и концу каждого пространственного размера применяется разная величина заполнения. Использовать матрицу размера 2-by-d, где d - количество пространственных измерений входных данных. Элемент (1,d) задает размер заполнения, применяемого к началу пространственного размера d. Элемент (2,d) задает размер заполнения, применяемого к концу пространственного размера d. Например, в 2-D формат [top, left; bottom, right].
Пример: 'Padding','same'
Типы данных: single | double
'PaddingValue' - Значение для данных площадки'symmetric-include-edge' | 'symmetric-exclude-edge' | 'replicate'Значение для данных площадки, указанное как одно из следующих значений:
PaddingValue | Описание | Пример |
|---|---|---|
| Скаляр | Площадка с указанным скалярным значением. |
|
'symmetric-include-edge' | Прокладка с использованием зеркальных значений входных данных, включая значения кромок. |
|
'symmetric-exclude-edge' | Прокладка с использованием зеркальных значений входных данных, за исключением краевых значений. |
|
'replicate' | Прокладка с использованием повторяющихся граничных элементов ввода |
|
dlY - Свернутая карта элементовdlarrayСвернутая карта элементов, возвращенная как dlarray с тем же базовым типом данных, что и dlX.
Если входные данные dlX является отформатированным dlarray, то dlY имеет тот же формат, что и dlX. Если входные данные не являются форматированными dlarray, то dlY является неформатированным dlarray с тем же порядком размеров, что и входные данные.
Размер 'C' (канальный) размер dlY зависит от задачи.
| Задача | Размер 'C' Измерение |
|---|---|
| Скручивание | Количество фильтров |
| Групповая свертка | Число фильтров в группе, умноженное на количество групп |
dlconv функция применяет фильтры скользящей свертки к входным данным. dlconv функция поддерживает свертку в одном, двух или трех пространственных измерениях или в одном временном измерении. Чтобы узнать больше о глубоком обучении свертки, см. определение сверточного слоя на convolution2dLayer справочная страница.
Примечания и ограничения по использованию:
Если хотя бы один из следующих входных аргументов является gpuArray или dlarray с базовыми данными типа gpuArray, эта функция выполняется на GPU.
dlX
weights
bias
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
batchnorm | dlarray | dlfeval | dlgradient | fullyconnect | maxpool | relu
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.