2D сверточный слой
2D сверточный слой применяет скользящие сверточные фильтры к 2D входу. Слой применяет операцию свертки к входу путем перемещения фильтров вдоль входа вертикально и горизонтально и вычисления скалярного произведения весов и входа, и затем добавления термина смещения.
создает 2D сверточный слой и устанавливает layer
= convolution2dLayer(filterSize
,numFilters
)FilterSize
и NumFilters
свойства.
устанавливает дополнительный layer
= convolution2dLayer(filterSize
,numFilters
,Name,Value
)Stride
, DilationFactor
, NumChannels
, Параметры и инициализация, скорость обучения и регуляризация и Name
свойства с помощью пар "имя-значение". Чтобы задать входное дополнение, используйте 'Padding'
аргумент пары "имя-значение". Например, convolution2dLayer(11,96,'Stride',4,'Padding',1)
создает 2D сверточный слой с 96 фильтрами размера [11 11]
, шаг [4 4]
, и дополнение размера 1 вдоль всех ребер слоя вводится. Можно задать несколько пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.
Используйте разделенные от запятой аргументы пары "имя-значение", чтобы задать размер дополнения, чтобы добавить вдоль ребер входа слоя или установить Stride
, DilationFactor
, NumChannels
, Параметры и инициализация, скорость обучения и регуляризация и Name
свойства. Заключите имена в одинарные кавычки.
convolution2dLayer(3,16,'Padding','same')
создает 2D сверточный слой с 16 фильтрами размера [3 3]
и 'same'
дополнение. В учебное время программное обеспечение вычисляет и устанавливает размер дополнения так, чтобы слой выход имел тот же размер как вход.Padding
— Введите дополнение ребра
(значение по умолчанию) | вектор из неотрицательных целых чисел | 'same'
Введите дополнение ребра в виде разделенной запятой пары, состоящей из 'Padding'
и одно из этих значений:
'same'
— Добавьте дополнение размера, вычисленного программным обеспечением при обучении или время предсказания так, чтобы выход имел тот же размер как вход, когда шаг равняется 1. Если шаг больше, чем 1, то выходным размером является ceil(inputSize/stride)
, где inputSize
высота или ширина входа и stride
шаг в соответствующей размерности. Программное обеспечение добавляет то же самое значение дополнения к верху и низу, и налево и право, если это возможно. Если дополнение, которое должно быть добавлено вертикально, имеет нечетное значение, то программное обеспечение добавляет дополнительное дополнение в нижнюю часть. Если дополнение, которое должно быть добавлено горизонтально, имеет нечетное значение, то программное обеспечение добавляет дополнительное дополнение направо.
Неотрицательный целочисленный p
— Добавьте дополнение размера p
ко всем ребрам входа.
Векторный [a b]
из неотрицательных целых чисел — Добавляют дополнение размера a
к верху и низу входа и дополнению размера b
налево и право.
Векторный [t b l r]
из неотрицательных целых чисел — Добавляют дополнение размера t
к верхней части, b
к нижней части, l
налево, и r
справа от входа.
Пример:
'Padding',1
добавляют одна строка дополнения к верху и низу и один столбец дополнения налево и права на вход.
Пример:
'Padding','same'
добавляет дополнение так, чтобы выход имел тот же размер как вход (если шаг равняется 1).
FilterSize
— Высота и ширина фильтровВысота и ширина фильтров в виде векторного [h w]
из двух положительных целых чисел, где h
высота и w
ширина. FilterSize
задает размер локальных областей, с которыми нейроны соединяются во входе.
При создании слоя можно задать FilterSize
как скаляр, чтобы использовать то же значение для высоты и ширины.
Пример: [5 5]
задает фильтры с высотой 5 и шириной 5.
NumFilters
— Количество фильтровЭто свойство доступно только для чтения.
Количество фильтров в виде положительного целого числа. Этот номер соответствует количеству нейронов в сверточном слое, которые соединяются с той же областью во входе. Этот параметр определяет количество каналов (карты функции) в выходе сверточного слоя.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Stride
— Размер шага для того, чтобы пересечь вход
(значение по умолчанию) | вектор из двух положительных целых чиселРазмер шага для того, чтобы пересечь вход вертикально и горизонтально в виде векторного [a b]
из двух положительных целых чисел, где a
вертикальный размер шага и b
горизонтальный размер шага. При создании слоя можно задать Stride
как скаляр, чтобы использовать то же значение для обоих размеров шага.
Пример:
[2 3]
задает вертикальный размер шага 2 и горизонтальный размер шага 3.
DilationFactor
— Фактор для расширенной свертки
(значение по умолчанию) | вектор из двух положительных целых чиселФактор для расширенной свертки (также известный atrous свертка) в виде векторного [h w]
из двух положительных целых чисел, где h
вертикальное расширение и w
горизонтальное расширение. При создании слоя можно задать DilationFactor
как скаляр, чтобы использовать то же значение и для горизонтальных и для вертикальных расширений.
Используйте расширенные свертки, чтобы увеличить восприимчивое поле (область входа, который слой видит) слоя, не увеличивая число параметров или расчета.
Слой расширяет фильтры путем вставки нулей между каждым элементом фильтра. Коэффициент расширения определяет размер шага для выборки входа или эквивалентно фактора повышающей дискретизации фильтра. Это соответствует эффективному размеру фильтра (Filter Size – 1).* Dilation Factor + 1. Например, 3х3 фильтр с коэффициентом расширения [2 2]
эквивалентно фильтру 5 на 5 с нулями между элементами.
Пример: [2 3]
PaddingSize
— Размер дополнения
(значение по умолчанию) | вектор из четырех неотрицательных целых чиселРазмер дополнения, чтобы применяться к входному граничит в виде векторного [t b l r]
из четырех неотрицательных целых чисел, где t
дополнение, применился к верхней части, b
дополнение, применился к нижней части, l
дополнение, примененное налево, и r
дополнение, примененное направо.
Когда вы создадите слой, используйте 'Padding'
аргумент пары "имя-значение", чтобы задать дополнительный размер.
Пример:
[1 1 2 2]
добавляют одна строка дополнения к верху и низу и два столбца дополнения налево и права на вход.
PaddingMode
— Метод, чтобы определить дополнительный размер'manual'
(значение по умолчанию) | 'same'
Метод, чтобы определить дополнительный размер в виде 'manual'
или 'same'
.
Программное обеспечение автоматически устанавливает значение PaddingMode
на основе 'Padding'
значение вы задаете при создании слоя.
Если вы устанавливаете 'Padding'
опция к скаляру или вектору из неотрицательных целых чисел, затем программное обеспечение автоматически устанавливает PaddingMode
к 'manual'
.
Если вы устанавливаете 'Padding'
опция к 'same'
, затем программное обеспечение автоматически устанавливает PaddingMode
к 'same'
и вычисляет размер дополнения в учебное время так, чтобы выход имел тот же размер как вход, когда шаг равняется 1. Если шаг больше, чем 1, то выходным размером является ceil(inputSize/stride)
, где inputSize
высота или ширина входа и stride
шаг в соответствующей размерности. Программное обеспечение добавляет то же самое значение дополнения к верху и низу, и налево и право, если это возможно. Если дополнение, которое должно быть добавлено вертикально, имеет нечетное значение, то программное обеспечение добавляет дополнительное дополнение в нижнюю часть. Если дополнение, которое должно быть добавлено горизонтально, имеет нечетное значение, то программное обеспечение добавляет дополнительное дополнение направо.
Padding
— Размер дополнения
(значение по умолчанию) | вектор из двух неотрицательных целых чиселПримечание
Padding
свойство будет удалено в будущем релизе. Используйте PaddingSize
вместо этого. При создании слоя используйте 'Padding'
аргумент пары "имя-значение", чтобы задать дополнительный размер.
Размер дополнения, чтобы применяться к входному граничит вертикально и горизонтально в виде векторного [a b]
из двух неотрицательных целых чисел, где a
дополнение, применился к верху и низу входных данных и b
дополнение, применился к левому и правому.
Пример:
[1 1]
добавляют одна строка дополнения к верху и низу и один столбец дополнения налево и права на вход.
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
NumChannels
— Количество каналов для каждого фильтра'auto'
(значение по умолчанию) | положительное целое числоКоличество каналов для каждого фильтра в виде 'auto'
или положительное целое число.
Этот параметр всегда равен количеству каналов входа к сверточному слою. Например, если вход является цветным изображением, то количество каналов для входа равняется 3. Если количество фильтров для сверточного слоя до текущего слоя равняется 16, то количество каналов для текущего слоя равняется 16.
Если NumChannels
'auto'
, затем программное обеспечение определяет количество каналов в учебное время.
Пример:
256
WeightsInitializer
— Функция, чтобы инициализировать веса'glorot'
(значение по умолчанию) | 'he'
| 'narrow-normal'
| 'zeros'
| 'ones'
| указатель на функциюФункция, чтобы инициализировать веса в виде одного из следующего:
'glorot'
– Инициализируйте веса инициализатором Glorot [4] (также известный как инициализатор Ксавьера). Инициализатор Glorot независимо выборки от равномерного распределения с нулевым средним значением и отклонением 2/(numIn + numOut)
, где numIn = FilterSize(1)*FilterSize(2)*NumChannels
и numOut = FilterSize(1)*FilterSize(2)*NumFilters
.
'he'
– Инициализируйте веса Им инициализатор [5]. Он выборки инициализатора от нормального распределения с нулевым средним значением и отклонением 2/numIn
, где numIn = FilterSize(1)*FilterSize(2)*NumChannels
.
'narrow-normal'
– Инициализируйте веса путем независимой выборки от нормального распределения с нулевым средним и стандартным отклонением 0.01.
'zeros'
– Инициализируйте веса нулями.
'ones'
– Инициализируйте веса единицами.
Указатель на функцию – Инициализирует веса пользовательской функцией. Если вы задаете указатель на функцию, то функция должна иметь форму weights = func(sz)
, где sz
размер весов. Для примера смотрите, Задают Пользовательскую Функцию Инициализации Веса.
Слой только инициализирует веса когда Weights
свойство пусто.
Типы данных: char |
string
| function_handle
BiasInitializer
— Функция, чтобы инициализировать смещение'zeros'
(значение по умолчанию) | 'narrow-normal'
| 'ones'
| указатель на функциюФункция, чтобы инициализировать смещение в виде одного из следующего:
'zeros'
– Инициализируйте смещение нулями.
'ones'
– Инициализируйте смещение единицами.
'narrow-normal'
– Инициализируйте смещение путем независимой выборки от нормального распределения с нулевым средним и стандартным отклонением 0.01.
Указатель на функцию – Инициализирует смещение пользовательской функцией. Если вы задаете указатель на функцию, то функция должна иметь форму bias = func(sz)
, где sz
размер смещения.
Слой только инициализирует смещение когда Bias
свойство пусто.
Типы данных: char |
string
| function_handle
Weights
— Веса слоя[]
(значение по умолчанию) | числовой массивВеса слоя для сверточного слоя в виде числового массива.
Веса слоя являются настраиваемыми параметрами. Можно задать начальное значение для весов непосредственно с помощью Weights
свойство слоя. Когда вы обучаете сеть, если Weights
свойство слоя непусто, затем trainNetwork
использует Weights
свойство как начальное значение. Если Weights
свойство пусто, затем trainNetwork
использует инициализатор, заданный WeightsInitializer
свойство слоя.
В учебное время, Weights
FilterSize(1)
- FilterSize(2)
- NumChannels
- NumFilters
массив.
Типы данных: single
| double
Bias
— Смещения слоя[]
(значение по умолчанию) | числовой массивСлой смещает для сверточного слоя в виде числового массива.
Смещения слоя являются настраиваемыми параметрами. Когда вы обучаете сеть, если Bias
непусто, затем trainNetwork
использует Bias
свойство как начальное значение. Если Bias
пусто, затем trainNetwork
использует инициализатор, заданный BiasInitializer
.
В учебное время, Bias
1 1 NumFilters
массив.
Типы данных: single
| double
WeightLearnRateFactor
— Фактор скорости обучения для весов
(значение по умолчанию) | неотрицательный скалярФактор скорости обучения для весов в виде неотрицательного скаляра.
Программное обеспечение умножает этот фактор на глобальную скорость обучения, чтобы определить скорость обучения для весов в этом слое. Например, если WeightLearnRateFactor
2
, затем скорость обучения для весов в этом слое является дважды текущей глобальной скоростью обучения. Программное обеспечение определяет глобальную скорость обучения на основе настроек, вы задаете использование trainingOptions
функция.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
BiasLearnRateFactor
— Фактор скорости обучения для смещений
(значение по умолчанию) | неотрицательный скалярФактор скорости обучения для смещений в виде неотрицательного скаляра.
Программное обеспечение умножает этот фактор на глобальную скорость обучения, чтобы определить скорость обучения для смещений в этом слое. Например, если BiasLearnRateFactor
2
, затем скорость обучения для смещений в слое является дважды текущей глобальной скоростью обучения. Программное обеспечение определяет глобальную скорость обучения на основе настроек, вы задаете использование trainingOptions
функция.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
WeightL2Factor
— фактор регуляризации L2 для весовФактор регуляризации L2 для весов в виде неотрицательного скаляра.
Программное обеспечение умножает этот фактор на глобальный фактор регуляризации L2, чтобы определить регуляризацию L2 для весов в этом слое. Например, если WeightL2Factor
2
, затем регуляризация L2 для весов в этом слое является дважды глобальным фактором регуляризации L2. Можно задать глобальный фактор регуляризации L2 использование trainingOptions
функция.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
BiasL2Factor
— фактор регуляризации L2 для смещений
(значение по умолчанию) | неотрицательный скалярФактор регуляризации L2 для смещений в виде неотрицательного скаляра.
Программное обеспечение умножает этот фактор на глобальный фактор регуляризации L2, чтобы определить регуляризацию L2 для смещений в этом слое. Например, если BiasL2Factor
2
, затем регуляризация L2 для смещений в этом слое является дважды глобальным фактором регуляризации L2. Можно задать глобальный фактор регуляризации L2 использование trainingOptions
функция.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Name
— Имя слоя''
(значение по умолчанию) | вектор символов | строковый скаляр
Имя слоя в виде вектора символов или строкового скаляра. Для Layer
вход массивов, trainNetwork
, assembleNetwork
, layerGraph
, и dlnetwork
функции автоматически присваивают имена к слоям с Name
установите на ''
.
Типы данных: char |
string
NumInputs
— Количество входных параметров
(значение по умолчанию)Это свойство доступно только для чтения.
Количество входных параметров слоя. Этот слой принимает один вход только.
Типы данных: double
InputNames
— Введите имена{'in'}
(значение по умолчанию)Это свойство доступно только для чтения.
Введите имена слоя. Этот слой принимает один вход только.
Типы данных: cell
NumOutputs
— Количество выходных параметров
(значение по умолчанию)Это свойство доступно только для чтения.
Количество выходных параметров слоя. Этот слой имеет один выход только.
Типы данных: double
OutputNames
— Выведите имена{'out'}
(значение по умолчанию)Это свойство доступно только для чтения.
Выведите имена слоя. Этот слой имеет один выход только.
Типы данных: cell
Создайте сверточный слой с 96 фильтрами, каждого с высотой и шириной 11. Используйте шаг (размер шага) 4 в горизонтальных и вертикальных направлениях.
layer = convolution2dLayer(11,96,'Stride',4)
layer = Convolution2DLayer with properties: Name: '' Hyperparameters FilterSize: [11 11] NumChannels: 'auto' NumFilters: 96 Stride: [4 4] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias: [] Show all properties
Включайте сверточный слой в Layer
массив.
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
reluLayer
maxPooling2dLayer(2,'Stride',2)
fullyConnectedLayer(10)
softmaxLayer
classificationLayer]
layers = 7x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' Max Pooling 2x2 max pooling with stride [2 2] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax 7 '' Classification Output crossentropyex
Чтобы задать веса и функции инициализатора смещения, используйте WeightsInitializer
и BiasInitializer
свойства соответственно. Чтобы задать веса и смещения непосредственно, используйте Weights
и Bias
свойства соответственно.
Задайте функции инициализации
Создайте сверточный слой с 32 фильтрами, каждого с высотой и шириной 5 и задайте инициализатор весов, чтобы быть Им инициализатор.
filterSize = 5; numFilters = 32; layer = convolution2dLayer(filterSize,numFilters, ... 'WeightsInitializer','he')
layer = Convolution2DLayer with properties: Name: '' Hyperparameters FilterSize: [5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias: [] Show all properties
Обратите внимание на то, что Weights
и Bias
свойства пусты. В учебное время программное обеспечение инициализирует эти свойства с помощью заданных функций инициализации.
Задайте пользовательские функции инициализации
Чтобы задать вашу собственную функцию инициализации для весов и смещений, установите WeightsInitializer
и BiasInitializer
свойства к указателю на функцию. Для этих свойств задайте указатели на функцию, которые берут размер весов и смещений как ввод и вывод инициализированное значение.
Создайте сверточный слой с 32 фильтрами, каждого с высотой и шириной 5 и задайте инициализаторы, которые производят веса и смещения от Распределения Гаусса со стандартным отклонением 0,0001.
filterSize = 5; numFilters = 32; layer = convolution2dLayer(filterSize,numFilters, ... 'WeightsInitializer', @(sz) rand(sz) * 0.0001, ... 'BiasInitializer', @(sz) rand(sz) * 0.0001)
layer = Convolution2DLayer with properties: Name: '' Hyperparameters FilterSize: [5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias: [] Show all properties
Снова, Weights
и Bias
свойства пусты. В учебное время программное обеспечение инициализирует эти свойства с помощью заданных функций инициализации.
Задайте веса и сместите непосредственно
Создайте полносвязный слой с выходным размером 10 и установите веса и смещение к W
и b
в файле MAT Conv2dWeights.mat
соответственно.
filterSize = 5; numFilters = 32; load Conv2dWeights layer = convolution2dLayer(filterSize,numFilters, ... 'Weights',W, ... 'Bias',b)
layer = Convolution2DLayer with properties: Name: '' Hyperparameters FilterSize: [5 5] NumChannels: 3 NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [5x5x3x32 double] Bias: [1x1x32 double] Show all properties
Здесь, Weights
и Bias
свойства содержат заданные значения. В учебное время, если эти свойства непусты, то программное обеспечение использует заданные значения в качестве начальных весов и смещений. В этом случае программное обеспечение не использует функции инициализатора.
Предположим, что размер входа 28 28 1. Создайте сверточный слой с 16 фильтрами, каждого с высотой 6 и шириной 4. Установите горизонтальный и вертикальный шаг на 4.
Убедитесь, что свертка покрывает вход полностью. Для свертки, чтобы полностью покрыть вход, и горизонталь и вертикальные выходные размерности должны быть целыми числами. Для горизонтальной выходной размерности, чтобы быть целым числом, одна строка дополнения требуется на верху и низе изображения: (28 – 6 + 2 * 1)/4 + 1 = 7. Для вертикальной выходной размерности, чтобы быть целым числом, не требуется никакое нулевое дополнение: (28 – 4 + 2 * 0)/4 + 1 = 7.
Создайте сверточный слой.
layer = convolution2dLayer([6 4],16,'Stride',4,'Padding',[1 0])
layer = Convolution2DLayer with properties: Name: '' Hyperparameters FilterSize: [6 4] NumChannels: 'auto' NumFilters: 16 Stride: [4 4] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [1 1 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias: [] Show all properties
2D сверточный слой применяет скользящие сверточные фильтры к 2D входу. Слой применяет операцию свертки к входу путем перемещения фильтров вдоль входа вертикально и горизонтально, вычисления скалярного произведения весов и входа, и затем добавления термина смещения.
Сверточный слой состоит из различных компонентов.[1]
Сверточный слой состоит из нейронов, которые соединяются с подобластями входных изображений или выходными параметрами предыдущего слоя. Слой изучает функции, локализованные этими областями при сканировании через изображение. При создании слоя с помощью convolution2dLayer
функция, можно задать размер этих областей с помощью filterSize
входной параметр.
Для каждой области, trainNetwork
функция вычисляет скалярное произведение весов и входа, и затем добавляет термин смещения. Набор весов, который применяется к области в изображении, называется фильтром. Фильтр проходит входное изображение вертикально и горизонтально, повторяя тот же расчет для каждой области. Другими словами, фильтр применяет операцию свертки к входу.
Это изображение показывает 3х3 сканирование фильтра через вход. Более низкая карта представляет вход, и верхняя карта представляет выход.
Размер шага, с которым перемещается фильтр, называется шагом. Можно задать размер шага с Stride
аргумент пары "имя-значение". Локальные области, с которыми соединяются нейроны, могут перекрыться в зависимости от filterSize
и 'Stride'
значения.
Это изображение показывает 3х3 сканирование фильтра через вход шагом 2. Более низкая карта представляет вход, и верхняя карта представляет выход.
Количеством весов в фильтре является h * w * c, где h является высотой, и w является шириной фильтра, соответственно, и c является количеством каналов во входе. Например, если вход является цветным изображением, количество цветовых каналов равняется 3. Количество фильтров определяет количество каналов в выходе сверточного слоя. Задайте количество фильтров с помощью numFilters
аргумент с convolution2dLayer
функция.
Расширенная свертка является сверткой, в которой фильтры расширены пробелами, вставленными между элементами фильтра. Задайте коэффициент расширения с помощью 'DilationFactor'
свойство.
Используйте расширенные свертки, чтобы увеличить восприимчивое поле (область входа, который слой видит) слоя, не увеличивая число параметров или расчета.
Слой расширяет фильтры путем вставки нулей между каждым элементом фильтра. Коэффициент расширения определяет размер шага для выборки входа или эквивалентно фактора повышающей дискретизации фильтра. Это соответствует эффективному размеру фильтра (Filter Size – 1).* Dilation Factor + 1. Например, 3х3 фильтр с коэффициентом расширения [2 2]
эквивалентно фильтру 5 на 5 с нулями между элементами.
Это изображение показывает 3х3 фильтр, расширенный на коэффициент двух сканирований через вход. Более низкая карта представляет вход, и верхняя карта представляет выход.
Когда фильтр проходит вход, он использует тот же набор весов и то же смещение для свертки, формируя карту функции. Каждая карта функции является результатом свертки с помощью различного набора весов и различного смещения. Следовательно, количество карт функции равно количеству фильтров. Общее количество параметров в сверточном слое ((h *w*c + 1) *Number of Filters), где 1 смещение.
Можно также применить дополнение, чтобы ввести цвета границы изображения вертикально и горизонтально использование 'Padding'
аргумент пары "имя-значение". Дополнение является значениями, добавленными к границам вход, чтобы увеличить его размер. Путем корректировки дополнения можно управлять выходным размером слоя.
Это изображение показывает 3х3 сканирование фильтра через вход с дополнением размера 1. Более низкая карта представляет вход, и верхняя карта представляет выход.
Выходная высота и ширина сверточного слоя (Input Size – ((Filter Size – 1) *Dilation Factor + 1) + 2*Padding)/Stride + 1. Это значение должно быть целым числом для целого изображения, которое будет полностью покрыто. Если комбинация этих опций не приводит изображение быть полностью покрытым, программное обеспечение по умолчанию игнорирует остающуюся часть изображения вдоль правых краев и базовых краев в свертке.
Продукт выходной высоты и ширины дает общее количество нейронов в карте функции, скажите Map Size. Общим количеством нейронов (выходной размер) в сверточном слое является Map Size *Number of Filters.
Например, предположите, что входное изображение является 32 32 3 цветными изображениями. Для сверточного слоя с восемью фильтрами и размером фильтра 5 на 5, количество весов на фильтр равняется 5 * 5 * 3 = 75, и общее количество параметров в слое (75 + 1) * 8 = 608. Если шаг 2 в каждом направлении, и дополнение размера 2 задано, то каждая карта функции 16 16. Это вызвано тем, что (32 – 5 + 2 * 2)/2 + 1 = 16.5, и часть наиболее удаленного дополнения направо и нижней части изображения отбрасывается. Наконец, общее количество нейронов в слое равняется 16 * 16 * 8 = 2048.
Обычно, результаты этих нейронов проходят через некоторую форму нелинейности, такой как исправленные линейные модули (ReLU).
Можно настроить скорости обучения и опции регуляризации для аргументов пары "имя-значение" использования слоя при определении сверточного слоя. Если вы принимаете решение не задать эти опции, то trainNetwork
использует глобальные опции обучения, заданные с trainingOptions
функция. Для получения дополнительной информации на глобальной переменной и опциях обучения слоя, смотрите Настроенные Параметры и Обучите Сверточную нейронную сеть.
Сверточная нейронная сеть может состоять из один или несколько сверточных слоев. Количество сверточных слоев зависит от суммы и сложности данных.
Поведение изменяется в R2019a
Начиная в R2019a, программное обеспечение, по умолчанию, инициализирует веса слоя этого слоя с помощью инициализатора Glorot. Это поведение помогает стабилизировать обучение и обычно уменьшает учебное время глубоких сетей.
В предыдущих релизах программное обеспечение, по умолчанию, инициализирует веса слоя путем выборки от нормального распределения с нулевым средним значением и отклонением 0.01. Чтобы воспроизвести это поведение, установите 'WeightsInitializer'
опция слоя к 'narrow-normal'
.
[1] LeCun, Y., Б. Бозер, Дж. С. Денкер, Д. Хендерсон, Р. Э. Говард, В. Хаббард и Л. Д. Джекель. "Рукописное Распознавание Цифры с Сетью Обратной связи". В Усовершенствованиях в Нейронных Системах обработки информации 2 (Д. Турецкий, редактор). Сан-Франциско: Морган Кофманн, 1990.
[2] LeCun, Y., Л. Боттоу, И. Бенхио и П. Хэффнер. ''Основанное на градиенте Изучение Примененного Распознавание Документа''. Продолжения IEEE. Издание 86, Номер 11, 1998, стр 2278–2324.
[3] Мерфи, K. P. Машинное обучение: вероятностная перспектива. Кембридж, MA: нажатие MIT, 2012.
[4] Glorot, Ксавьер и Иосуа Бенхио. "Изучая Трудность Учебных Глубоких Нейронных сетей Прямого распространения". В Продолжениях Тринадцатой Международной конференции по вопросам Искусственного интеллекта и Статистики, 249–356. Сардиния, Италия: AISTATS, 2010.
[5] Он, Kaiming, Сянюй Чжан, Шаоцин Жэнь и Цзянь Сунь. "Копаясь Глубоко в Выпрямителях: Превышение Эффективности Человеческого Уровня на Классификации ImageNet". В Продолжениях 2 015 Международных конференций IEEE по вопросам Компьютерного зрения, 1026–1034. Вашингтон, округ Колумбия: Общество Компьютерного зрения IEEE, 2015.
Указания и ограничения по применению:
Для генерации кода, PaddingValue
параметр должен быть равен 0
, который является значением по умолчанию.
Указания и ограничения по применению:
Для генерации кода, PaddingValue
параметр должен быть равен 0
, который является значением по умолчанию.
trainNetwork
| reluLayer
| batchNormalizationLayer
| maxPooling2dLayer
| fullyConnectedLayer
| groupedConvolution2dLayer
| Deep Network Designer
[1] Кредит изображений: арифметика Свертки (Лицензия)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.