Глубокое обучение
Операция свертки применяет скользящие фильтры к входным данным. Используйте 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'
(time) размерность входных данных, задайте формат весов '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
имеет размерность несинглтона, затем каждый элемент 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
- количество пространственных размерностей входных данных. The i
th элемент вектора задает коэффициент расширения, применяемый к i
2ая пространственная размерность.
Используйте коэффициент расширения, чтобы увеличить восприимчивое поле фильтра (область входов, которые может видеть фильтр) на входных данных. Использование коэффициента расширения соответствует эффективному размеру фильтра filterSize + (filterSize-1)*(dilationFactor-1)
.
Пример: 'DilationFactor',2
Типы данных: single
| double
'Padding'
- Размер заполнения, применяемого к ребрам данных0
(по умолчанию) | 'same'
| числовой скаляр | числовой вектор | числовая матрицаРазмер заполнения, применяемого к ребрам данных, задается как разделенная разделенными запятой парами, состоящая из 'Padding'
и одно из следующих:
'same'
- Размер заполнения устанавливается таким образом, чтобы выходной размер совпадал с размером входного сигнала, когда полоска 1
. В более общем случае выходной размер каждой пространственной размерности ceil(inputSize/stride)
, где inputSize
- размер входа по пространственной размерности.
Числовой скаляр - одинаковое количество заполнения применяется к обоим концам всех пространственных размерностей.
Числовой вектор - различное количество заполнения применяется вдоль каждой пространственной размерности. Используйте вектор размера d
, где d
- количество пространственных размерностей входных данных. The i
th элемент вектора задает размер заполнения, приложенного к началу и концу вдоль i
2ая пространственная размерность.
Числовая матрица - различное количество заполнения применяется к началу и концу каждой пространственной размерности. Используйте матрицу размера 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' Размерность |
---|---|
Скручивание | Количество фильтров |
Сгруппированная свертка | Количество фильтров в группе, умноженное на количество групп |
The dlconv
функция применяет скользящие фильтры свертки к входным данным. The dlconv
функция поддерживает свертку в одном, двух или трех пространственных измерениях или одной временной размерности. Чтобы узнать больше о свертке глубокого обучения, смотрите определение сверточного слоя на convolution2dLayer
страница с описанием.
Указания и ограничения по применению:
Когда по крайней мере один из следующих входных параметров является gpuArray
или dlarray
с базовыми данными типа gpuArray
эта функция выполняется на графическом процессоре.
dlX
weights
bias
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
batchnorm
| dlarray
| dlfeval
| dlgradient
| fullyconnect
| maxpool
| relu
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.