2-D сверточный слой
2-D сверточный слой применяет скользящие сверточные фильтры к входу. Слой свертывает входной сигнал, перемещая фильтры по входному сигналу вертикально и горизонтально и вычисляя скалярное произведение весов и входного сигнала, а затем добавляя элемент смещения.
создает 2-D сверточный слой и задает layer = convolution2dLayer(filterSize,numFilters)FilterSize и NumFilters свойства.
устанавливает необязательный layer = convolution2dLayer(filterSize,numFilters,Name,Value)Stride, DilationFactor, NumChannels, Параметры и инициализация, Скорость обучения и регуляризация, и Name с использованием пар имя-значение. Чтобы указать заполнение ввода, используйте 'Padding' аргумент пары имя-значение. Например, convolution2dLayer(11,96,'Stride',4,'Padding',1) создает 2-D сверточный слой с 96 фильтрами размера [11 11], шаг [4 4]и заполнение размером 1 вдоль всех краев входного слоя. Можно указать несколько пар имя-значение. Заключите каждое имя свойства в отдельные кавычки.
Используйте аргументы пары имя-значение, разделенные запятыми, чтобы указать размер заполнения, добавляемого вдоль краев входного слоя, или задать значение Stride, DilationFactor, NumChannels, Параметры и инициализация, Скорость обучения и регуляризация, и Name свойства. Заключите имена в одинарные кавычки.
convolution2dLayer(3,16,'Padding','same') создает 2-D сверточный слой с 16 фильтрами размера [3 3] и 'same' заполнение. Во время обучения программное обеспечение вычисляет и устанавливает размер заполнения так, чтобы выходной уровень имел тот же размер, что и входной.'Padding' - Заполнение входного края[0 0 0 0] (по умолчанию) | вектор неотрицательных целых чисел | '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 - Количество фильтровЧисло фильтров, указанное как положительное целое число. Это число соответствует количеству нейронов в сверточном слое, которые соединяются с одной и той же областью на входе. Этот параметр определяет количество каналов (карты характеристик) на выходе сверточного уровня.
Пример:
96
Stride - Размер шага для проходного ввода[1 1] (по умолчанию) | вектор двух положительных целых чиселРазмер шага для прохождения входного сигнала по вертикали и горизонтали, заданный как вектор [a b] двух положительных целых чисел, где a - вертикальный размер шага и b - размер шага по горизонтали. При создании слоя можно указать Stride в качестве скаляра для использования одинакового значения для обоих размеров шага.
Пример:
[2 3] задает вертикальный размер шага 2 и горизонтальный размер шага 3.
DilationFactor - Коэффициент для расширенной свертки[1 1] (по умолчанию) | вектор двух положительных целых чиселКоэффициент для расширенной свертки (также известный как atrous convolution), определяемый как вектор [h w] двух положительных целых чисел, где h - вертикальное расширение и w - горизонтальное расширение. При создании слоя можно указать DilationFactor в качестве скаляра для использования одного и того же значения как для горизонтальных, так и для вертикальных расширений.
Используйте расширенные свертки для увеличения воспринимающего поля (области входа, которую может видеть слой) слоя без увеличения количества параметров или вычислений.
Слой расширяет фильтры, вставляя нули между каждым элементом фильтра. Коэффициент расширения определяет размер шага для выборки входного сигнала или эквивалентный коэффициент повышения дискретизации фильтра. Он соответствует эффективному размеру фильтра (размер фильтра - 1). * Коэффициент расширения + 1. Например, фильтр 3 на 3 с коэффициентом расширения [2 2] эквивалентен фильтру 5 на 5 с нулями между элементами.
Пример: [2 3]
PaddingSize - Размер заполнения[0 0 0 0] (по умолчанию) | вектор четырех неотрицательных целых чиселРазмер заполнения, применяемого к границам ввода, заданный как вектор [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 - Размер заполнения[0 0] (по умолчанию) | вектор двух неотрицательных целых чиселПримечание
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' | Прокладка с использованием повторяющихся граничных элементов ввода |
|
NumChannels - Количество каналов для каждого фильтра'auto' (по умолчанию) | положительное целое числоКоличество каналов для каждого фильтра, указанное как 'auto' или положительное целое число.
Этот параметр всегда равен количеству каналов входа в сверточный уровень. Например, если вход является цветным изображением, то количество каналов для входа равно 3. Если число фильтров для сверточного уровня до текущего уровня равно 16, то количество каналов для текущего уровня равно 16.
Если NumChannels является 'auto', то программное обеспечение определяет количество каналов во время обучения.
Пример:
256
WeightsInitializer - Функция инициализации весов'glorot' (по умолчанию) | 'he' | 'narrow-normal' | 'zeros' | 'ones' | дескриптор функцииФункция для инициализации весов, указанных как одно из следующих:
'glorot' - Инициализируйте веса с помощью инициализатора Glorot [4] (также известного как инициализатор Xavier). Инициализатор Glorot независимо отсчитывает из однородного распределения с нулевым средним и дисперсией 2/(numIn + numOut), где numIn = FilterSize(1)*FilterSize(2)*NumChannels и numOut = FilterSize(1)*FilterSize(2)*NumFilters.
'he' - Инициализируйте веса с помощью инициализатора He [5]. Выборка инициализатора He из нормального распределения с нулевым средним и дисперсией 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-by-NumFilters массив.
Типы данных: single | double
WeightLearnRateFactor - Коэффициент коэффициента усвоения весовКоэффициент скорости обучения для весов, заданный как неотрицательный скаляр.
Программное обеспечение умножает этот коэффициент на глобальную скорость обучения, чтобы определить скорость обучения для весов на этом уровне. Например, если WeightLearnRateFactor 2, то скорость обучения для весов в этом слое вдвое превышает текущую глобальную скорость обучения. Программа определяет глобальную скорость обучения на основе настроек, указанных в trainingOptions функция.
Пример:
2
BiasLearnRateFactor - Коэффициент успеваемости для предубежденийКоэффициент скорости обучения для смещений, заданный как неотрицательный скаляр.
Программное обеспечение умножает этот коэффициент на глобальную скорость обучения, чтобы определить скорость обучения для отклонений на этом уровне. Например, если BiasLearnRateFactor 2, тогда скорость обучения для отклонений в слое в два раза превышает текущую глобальную скорость обучения. Программа определяет глобальную скорость обучения на основе настроек, указанных в trainingOptions функция.
Пример:
2
WeightL2Factor - коэффициент регуляризации L2 для весовL2 коэффициент регуляризации для весов, определяемый как неотрицательный скаляр.
Программное обеспечение умножает этот коэффициент на глобальный коэффициент регуляризации L2, чтобы определить L2 регуляризацию для весов в этом слое. Например, если WeightL2Factor 2, то L2 регуляризация для весов в этом слое вдвое больше глобального коэффициента регуляризации L2. Можно указать глобальный коэффициент регуляризации L2 с помощью trainingOptions функция.
Пример:
2
BiasL2Factor - коэффициент регуляризации L2 для отклоненийL2 коэффициент регуляризации для смещений, определяемый как неотрицательный скаляр.
Программное обеспечение умножает этот коэффициент на глобальный коэффициент регуляризации L2, чтобы определить L2 регуляризацию для смещений на этом уровне. Например, если BiasL2Factor 2, то L2 регуляризация для смещений в этом слое вдвое превышает глобальный коэффициент регуляризации L2. Можно указать глобальный коэффициент регуляризации L2 с помощью trainingOptions функция.
Пример:
2
Name - Имя слоя'' (по умолчанию) | символьный вектор | строковый скаляр
Имя слоя, указанное как символьный вектор или строковый скаляр. Чтобы включить слой в график слоев, необходимо указать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с уровнем и 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, и укажите инициализатор весов в качестве инициализатора He.
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
2-D сверточный слой применяет скользящие сверточные фильтры к входу. Слой свертывает входной сигнал, перемещая фильтры по входному сигналу вертикально и горизонтально, вычисляя скалярное произведение весов и входного сигнала, а затем добавляя элемент смещения.
Сверточный слой состоит из различных компонентов. [1 ]
Сверточный слой состоит из нейронов, которые соединяются с субрегионами входных изображений или выходами предыдущего уровня. Слой изучает элементы, локализованные этими областями, при сканировании изображения. При создании слоя с помощью convolution2dLayer , можно указать размер этих областей с помощью filterSize входной аргумент.
Для каждого региона trainNetwork функция вычисляет скалярное произведение весов и входных данных, а затем добавляет член смещения. Набор весов, который применяется к области изображения, называется фильтром. Фильтр перемещается по входному изображению вертикально и горизонтально, повторяя одни и те же вычисления для каждой области. Другими словами, фильтр свертывает входной сигнал.
На этом рисунке показано сканирование фильтра 3 на 3 через вход. Нижняя карта представляет входные данные, а верхняя карта представляет выходные данные.

Размер шага, с которым перемещается фильтр, называется шагом. Размер шага можно указать с помощью Stride аргумент пары имя-значение. Локальные области, с которыми соединяются нейроны, могут перекрываться в зависимости от filterSize и 'Stride' значения.
На этом рисунке показано сканирование фильтра 3 на 3 через вход с шагом 2. Нижняя карта представляет входные данные, а верхняя карта представляет выходные данные.

Число весов в фильтре равно h * w * c, где h - высота, а w - ширина фильтра соответственно, а c - количество каналов на входе. Например, если вход представляет собой цветное изображение, количество цветовых каналов равно 3. Количество фильтров определяет количество каналов на выходе сверточного уровня. Укажите количество фильтров с помощью numFilters аргумент с convolution2dLayer функция.
Расширенный сверток - это сверток, в котором фильтры расширены промежутками, вставленными между элементами фильтра. Укажите коэффициент расширения с помощью 'DilationFactor' собственность.
Используйте расширенные свертки для увеличения воспринимающего поля (области входа, которую может видеть слой) слоя без увеличения количества параметров или вычислений.
Слой расширяет фильтры, вставляя нули между каждым элементом фильтра. Коэффициент расширения определяет размер шага для выборки входного сигнала или эквивалентный коэффициент повышения дискретизации фильтра. Он соответствует эффективному размеру фильтра (размер фильтра - 1). * Коэффициент расширения + 1. Например, фильтр 3 на 3 с коэффициентом расширения [2 2] эквивалентен фильтру 5 на 5 с нулями между элементами.
На этом рисунке показан фильтр 3 на 3, расширенный в два раза при сканировании через вход. Нижняя карта представляет входные данные, а верхняя карта представляет выходные данные.

Когда фильтр перемещается по входному сигналу, он использует тот же набор весов и то же смещение для свертки, образуя карту элементов. Каждая карта элементов является результатом свертки, использующей различный набор весов и различное смещение. Следовательно, количество карт признаков равно количеству фильтров. Общее число параметров в сверточном слое равно ((h * w * c + 1) * Число фильтров), где 1 - смещение.
Можно также применить заполнение к границам входного изображения по вертикали и горизонтали с помощью 'Padding' аргумент пары имя-значение. Заполнение - это значения, добавляемые к границам входных данных для увеличения их размера. Настраивая заполнение, можно управлять размером вывода слоя.
На этом рисунке показано сканирование фильтра 3 на 3 через вход с заполнением размера 1. Нижняя карта представляет входные данные, а верхняя карта представляет выходные данные.

Высота и ширина вывода сверточного слоя: (Входной размер - ((Размер фильтра - 1) * Коэффициент расширения + 1) + 2 * Заполнение )/Stride + 1. Это значение должно быть целым числом для полного охвата всего изображения. Если сочетание этих опций не приводит к полному закрытию изображения, программа по умолчанию игнорирует оставшуюся часть изображения вдоль правого и нижнего краев свертки.
Произведение выходной высоты и ширины дает общее количество нейронов в карте признаков, скажем, размер карты. Общее количество нейронов (выходной размер) в сверточном слое - 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] ЛеКун, Ю., Б. Босер, Дж. С. Денкер, Д. Хендерсон, Р. Э. Ховард, В. Хаббард и Л. Д. Джакел. «Распознавание рукописных цифр с помощью сети обратного распространения». In Advances in Neural Information Processing Systems 2 (D. Touretzky, ред.). Сан-Франциско: Морган Кауфманн, 1990.
[2] LeCun, Y., L. Bottou, Y. Bengio и P. Haffner. «Градиентное обучение, применяемое к распознаванию документов». Процедуры IEEE. том 86, номер 11, 1998, стр. 2278-2324.
[3] Мерфи, К. П. Машинное обучение: вероятностная перспектива. Кембридж, Массачусетс: MIT Press, 2012.
[4] Глорот, Ксавье и Йошуа Бенгио. «Понимание сложности обучения глубоким нейронным сетям». Материалы тринадцатой Международной конференции по искусственному интеллекту и статистике, 249-356. Сардиния, Италия: AISTATS, 2010.
[5] Хэ, Каймин, Сянъу Чжан, Шаоцин Жэнь и Цзянь Сунь. «Углубляясь в выпрямители: превосходя показатели на уровне человека по классификации ImageNet». В трудах Международной конференции IEEE 2015 по компьютерному зрению, 1026-1034. Вашингтон, округ Колумбия: Общество компьютерного зрения IEEE, 2015.
Для создания кода, PaddingValue параметр должен быть равен 0, которое является значением по умолчанию.
Для создания кода, PaddingValue параметр должен быть равен 0, которое является значением по умолчанию.
batchNormalizationLayer | Конструктор глубоких сетей | fullyConnectedLayer | groupedConvolution2dLayer | maxPooling2dLayer | reluLayer | trainNetwork
[1] Кредит изображения: арифметика свертки (лицензия)
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.