Свертка глубокого обучения
Операция свертки применяет скользящие фильтры к входным данным. Используйте 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'
задает данные для 2D свертки с форматом 'SSCB'
(пространственный, пространственный, канал, пакет).
задает опции с помощью одного или нескольких аргументов пары "имя-значение" с помощью любого из предыдущих синтаксисов. Например, dlY
= dlconv(___,Name,Value
)'WeightsFormat','TCU'
задает веса для 1D свертки с форматом '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'
Инициализируйте веса и смещение для 2D свертки. Для весов задайте 64 3х3 фильтра. Для смещения задайте нулевой вектор.
filterSize = [3 3]; numFilters = 64; weights = rand(filterSize(1),filterSize(2),numChannels,numFilters); bias = zeros(1,numFilters);
Примените 2D свертку с помощью 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');
Инициализируйте веса и смещение для 1D свертки. Для весов задайте 64 фильтра с размером фильтра 3. Для смещения задайте нулевой вектор.
filterSize = 3; numFilters = 64; weights = rand(filterSize,numChannels,numFilters); bias = zeros(1,numFilters);
Примените 1D свертку с помощью 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'
), затем те размерности должны быть в упорядоченном как описано в этой таблице.
Задача | Необходимые размерности | Размер | Пример | |
---|---|---|---|---|
Веса | Формат | |||
1D свертка | 'S' (пространственный) или 'T' Время | Отфильтруйте размер |
| 'SCU' (пространственный, канал, незаданный) |
'C' (канал) | Количество каналов | |||
'U' (незаданный) | Количество фильтров | |||
1D сгруппированная свертка | 'S' (пространственный) или 'T' Время | Отфильтруйте размер |
| 'SCUU' (пространственный, канал, незаданный, незаданный) |
'C' (канал) | Количество каналов на группу | |||
Первый 'U' (незаданный) | Количество фильтров на группу | |||
Второй 'U' (незаданный) | Количество групп | |||
2D Свертка | Первый 'S' (пространственный) | Отфильтруйте высоту |
| 'SSCU' (пространственный, пространственный, канал, незаданный) |
Секунды (пространственный) или 'T' Время | Отфильтруйте ширину | |||
'C' (канал) | Количество каналов | |||
'U' (незаданный) | Количество фильтров | |||
2D сгруппированная свертка | Первый 'S' (пространственный) | Отфильтруйте высоту |
| 'SSCUU' (пространственный, пространственный, канал, незаданный, незаданный) |
Секунды (пространственный) или 'T' Время | Отфильтруйте ширину | |||
'C' (канал) | Количество каналов на группу | |||
Первый 'U' (незаданный) | Количество фильтров на группу | |||
Второй 'U' (незаданный) | Количество групп | |||
3-D Свертка | Первый 'S' (пространственный) | Отфильтруйте высоту |
| 'SSSCU' (пространственный, пространственный, пространственный, канал, незаданный) |
Секунды (пространственный) | Отфильтруйте ширину | |||
Треть 'S' (пространственный) или 'T' Время | Отфильтруйте глубину | |||
'C' (канал) | Количество каналов | |||
'U' (незаданный) | Количество фильтров |
Для отделимого мудрого каналом (также известный мудрыми глубиной отделимый) свертка, используйте сгруппированную свертку с количеством групп, равных количеству каналов.
Совет
Функция, по умолчанию, применяет операцию свертки до трех измерений dlX
пометил 'S'
(пространственный). Применять операцию свертки по размерностям пометило 'T'
(время), задайте weights
с 'T'
размерность с помощью отформатированного dlarray
возразите или при помощи 'WeightsFormat'
опция.
bias
— Постоянное смещениеdlarray
| числовой вектор | числовой скалярСмещение, постоянное в виде отформатированного dlarray
, бесформатный dlarray
, числовой вектор или числовой скаляр.
Если bias
скаляр, затем то же смещение применяется к каждому выходу.
Если bias
имеет неодноэлементную размерность, затем каждый элемент bias
смещение, применился к соответствующему сверточному фильтру, заданному weights
. Число элементов bias
должен совпадать с количеством фильтров, заданных weights
.
Если bias
0
, затем термин смещения отключен, и никакое смещение не добавляется во время операции свертки.
Если bias
отформатированный dlarray
, затем неодноэлементная размерность должна быть размерностью канала с меткой 'C'
(канал).
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'DilationFactor',2
устанавливает коэффициент расширения для каждого сверточного фильтра к 2
.DataFormat
— Порядок размерности неформатированных данныхПорядок размерности бесформатных входных данных в виде вектора символов или строкового скаляра FMT
это обеспечивает метку для каждой размерности данных.
Когда вы задаете формат dlarray
объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:
"S"
— Пространственный
"C"
— Канал
"B"
— Пакет (например, выборки и наблюдения)
"T"
— Время (например, временные шаги последовательностей)
"U"
— Незаданный
Можно указать, что несколько размерностей пометили "S"
или "U"
. Можно использовать, маркирует "C"
B
, и "T"
самое большее однажды.
Необходимо задать DataFormat
когда входными данными не является отформатированный dlarray
.
Типы данных: char |
string
WeightsFormat
— Порядок размерности весовПорядок размерности весов в виде разделенной запятой пары, состоящей из 'WeightsFormat'
и вектор символов или строковый скаляр, который обеспечивает метку для каждой размерности весов.
Значение по умолчанию 'WeightsFormat'
зависит от задачи:
Задача | Значение по умолчанию |
---|---|
1D свертка | 'SCU' (пространственный, канал, незаданный) |
1D сгруппированная свертка | 'SCUU' (пространственный, канал, незаданный, незаданный) |
2D Свертка | 'SSCU' (пространственный, пространственный, канал, незаданный) |
2D сгруппированная свертка | 'SSCUU' (пространственный, пространственный, канал, незаданный, незаданный) |
3-D Свертка | 'SSSCU' (пространственный, пространственный, пространственный, канал, незаданный) |
Поддерживаемые комбинации меток размерности зависят от типа свертки, для получения дополнительной информации, смотрите weights
аргумент.
Совет
Функция, по умолчанию, применяет операцию свертки до трех измерений dlX
пометил 'S'
(пространственный). Применять операцию свертки по размерностям пометило 'T'
(время), задайте weights
с 'T'
размерность с помощью отформатированного dlarray
возразите или при помощи 'WeightsFormat'
опция.
Пример: 'WeightsFormat','TCU'
Типы данных: char |
string
Stride
— Размер шага для того, чтобы пересечь входные данные
(значение по умолчанию) | числовой скаляр | числовой векторРазмер шага для того, чтобы пересечь входные данные в виде разделенной запятой пары, состоящей из 'Stride'
и числовой скаляр или числовой вектор. Если вы задаете 'Stride'
как скаляр, то же значение используется для всех пространственных размерностей. Если вы задаете 'Stride'
как вектор одного размера с количеством пространственных размерностей входных данных, векторные значения используются для соответствующих пространственных размерностей.
Значение по умолчанию 'Stride'
1
.
Пример: 'Stride',3
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
DilationFactor
— Отфильтруйте коэффициент расширения
(значение по умолчанию) | числовой скаляр | числовой векторОтфильтруйте коэффициент расширения в виде разделенной запятой пары, состоящей из 'DilationFactor'
и одно из следующих.
Числовой скаляр — то же значение коэффициента расширения применяется для всех пространственных размерностей.
Числовой вектор — различное значение коэффициента расширения применяется по каждому пространственному измерению. Используйте вектор из размера d
, где d
количество пространственных размерностей входных данных. i
элемент th вектора указывает, что коэффициент расширения применился к i
th пространственная размерность.
Используйте коэффициент расширения, чтобы увеличить восприимчивое поле фильтра (область входа, который фильтр видит) на входных данных. Используя коэффициент расширения соответствует эффективному размеру фильтра filterSize + (filterSize-1)*(dilationFactor-1)
.
Пример: 'DilationFactor',2
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Padding
— Размер дополнения
(значение по умолчанию) | 'same'
| 'causal'
| числовой скаляр | числовой вектор | числовая матрицаРазмер дополнения применился к 'S'
и 'T'
размерности, данные форматом весов в виде разделенной запятой пары, состоящей из 'Padding'
и одно из следующего:
'same'
— Примените дополнение таким образом, что выходными размерами размерности является ceil(inputSize/stride)
, где inputSize
размер соответствующей входной размерности. Когда Stride
1
, выход одного размера с входом.
'causal'
– Примените оставленное дополнение размером (FilterSize - 1)
.* DilationFactor
. Эта свертка поддержек опции за одно время или пространственную размерность только. Когда Stride
1
, выход одного размера с входом.
Неотрицательный целочисленный sz
— Добавьте дополнение размера sz
к обоим концам 'S'
или 'T'
размерности, данные форматом весов.
Вектор из целых чисел sz
— Добавьте дополнение размера sz(i)
к обоим концам i
th 'S'
или 'T'
размерности, данные форматом весов. Число элементов sz
должен совпадать с количеством 'S'
или 'T'
размерности весов.
Матрица целых чисел sz
— Добавьте дополнение размера sz(1,i)
и sz(2,i)
к началу и концу i
th 'S'
или 'T'
размерности, данные форматом весов. Например, для 2D входа, [t l; b r]
применяет дополнение размера t
B
L
, и r
к верхней части, нижней части, оставленной, и право на вход, соответственно.
Пример: 'Padding','same'
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
PaddingValue
— Значение, чтобы заполнить данные'symmetric-include-edge'
| 'symmetric-exclude-edge'
| 'replicate'
Значение, чтобы заполнить данные в виде одного из следующего:
PaddingValue | Описание | Пример |
---|---|---|
Скаляр | Заполните заданным скалярным значением. |
|
'symmetric-include-edge' | Заполните зеркально отраженные значения использования входа, включая значения ребра. |
|
'symmetric-exclude-edge' | Заполните зеркально отраженные значения использования входа, исключая значения ребра. |
|
'replicate' | Заполните использование повторенные элементы границы входа |
|
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
dlY
— Карта функции, к которой применяют операцию свертки,dlarray
Карта функции, к которой применяют операцию свертки, возвращенная как dlarray
с тем же базовым типом данных как dlX
.
Если входные данные dlX
отформатированный dlarray
, затем dlY
имеет тот же формат как dlX
. Если входными данными не является отформатированный dlarray
, затем dlY
бесформатный dlarray
с той же размерностью заказывают как входные данные.
Размер 'C'
(канал) размерность dlY
зависит от задачи.
Задача | Размер 'C' Размерность |
---|---|
Свертка | Количество фильтров |
Сгруппированная свертка | Количество фильтров на группу, умноженную на количество групп |
dlconv
функция применяет скользящие фильтры свертки к входным данным. dlconv
функционируйте свертка поддержек в один, два, или три пространственных размерности или одно измерение времени. Чтобы узнать больше о свертке глубокого обучения, см. определение сверточного слоя на convolution2dLayer
страница с описанием.
Указания и ограничения по применению:
Когда по крайней мере одним из следующих входных параметров является gpuArray
или dlarray
с базовыми данными типа gpuArray
, эта функция работает на графическом процессоре.
dlX
weights
bias
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
dlarray
| batchnorm
| fullyconnect
| maxpool
| relu
| dlgradient
| dlfeval
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.