Средний слой объединения
Средний слой объединения выполняет субдискретизацию путем деления входа на прямоугольные области объединения и вычисление средних значений каждой области.
создает средний слой объединения и устанавливает layer
= averagePooling2dLayer(poolSize
)PoolSize
свойство.
устанавливает дополнительный layer
= averagePooling2dLayer(poolSize
,Name,Value
)Stride
и Name
свойства с помощью пар "имя-значение". Чтобы задать входное дополнение, используйте 'Padding'
аргумент пары "имя-значение". Например, averagePooling2dLayer(2,'Stride',2)
создает средний слой объединения с размером пула [2 2]
и шаг [2 2]
. Можно задать несколько пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.
Используйте разделенные от запятой аргументы пары "имя-значение", чтобы задать размер нулевого дополнения, чтобы добавить вдоль ребер входа слоя или установить Stride
и Name
свойства. Заключите имена в одинарные кавычки.
averagePooling2dLayer(2,'Stride',2)
создает средний слой объединения с размером пула [2 2]
и шаг [2 2]
.'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).
PoolSize
— Размерности объединения областейРазмерности областей объединения в виде вектора двух положительных целых чисел [h w]
, где h
высота и w
ширина. При создании слоя можно задать PoolSize
как скаляр, чтобы использовать то же значение в обеих размерностях.
Если размерности шага Stride
меньше соответствующих размерностей объединения, затем перекрытие областей объединения.
Дополнительные размерности PaddingSize
должен быть меньше размерностей области объединения PoolSize
.
Пример:
[2 1]
задает области объединения высоты 2 и ширина 1.
Stride
— Размер шага для того, чтобы пересечь вход
(значение по умолчанию) | вектор двух положительных целых чиселРазмер шага для того, чтобы пересечь вход вертикально и горизонтально в виде вектора двух положительных целых чисел [a b]
, где a
вертикальный размер шага и b
горизонтальный размер шага. При создании слоя можно задать Stride
как скаляр, чтобы использовать то же значение в обеих размерностях.
Если размерности шага Stride
меньше соответствующих размерностей объединения, затем перекрытие областей объединения.
Дополнительные размерности PaddingSize
должен быть меньше размерностей области объединения PoolSize
.
Пример:
[2 3]
задает вертикальный размер шага 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]
добавляют одна строка дополнения к верху и низу и один столбец дополнения налево и права на вход.
Name
— Имя слоя''
(значение по умолчанию) | вектор символов | строковый скаляр
Имя слоя в виде вектора символов или строкового скаляра. Чтобы включать слой в график слоев, необходимо задать непустое уникальное имя слоя. Если вы обучаете серийную сеть со слоем и Name
установлен в ''
, затем программное обеспечение автоматически присваивает имя к слою в учебное время.
Типы данных: char |
string
NumInputs
— Количество входных параметровКоличество входных параметров слоя. Этот слой принимает один вход только.
Типы данных: double
InputNames
— Введите имена{'in'}
(значение по умолчанию)Введите имена слоя. Этот слой принимает один вход только.
Типы данных: cell
NumOutputs
— Количество выходных параметровКоличество выходных параметров слоя. Этот слой имеет один выход только.
Типы данных: double
OutputNames
— Выведите имена{'out'}
(значение по умолчанию)Выведите имена слоя. Этот слой имеет один выход только.
Типы данных: cell
Создайте средний слой объединения с именем 'avg1'
.
layer = averagePooling2dLayer(2,'Name','avg1')
layer = AveragePooling2DLayer with properties: Name: 'avg1' Hyperparameters PoolSize: [2 2] Stride: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0]
Включайте средний слой объединения в Layer
массив.
layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
reluLayer
averagePooling2dLayer(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 '' Average Pooling 2x2 average pooling with stride [1 1] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax 7 '' Classification Output crossentropyex
Создайте средний слой объединения с неналожением областей объединения.
layer = averagePooling2dLayer(2,'Stride',2)
layer = AveragePooling2DLayer with properties: Name: '' Hyperparameters PoolSize: [2 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0]
Высота и ширина прямоугольных областей (размер пула) оба 2. Области объединения не перекрываются, потому что размер шага для того, чтобы пересечь изображения вертикально и горизонтально (шаг) равняется также 2.
Включайте средний слой объединения с неперекрывающимися областями в Layer
массив.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer averagePooling2dLayer(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 '' Average Pooling 2x2 average 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
Создайте средний слой объединения с наложением областей объединения.
layer = averagePooling2dLayer([3 2],'Stride',2)
layer = AveragePooling2DLayer with properties: Name: '' Hyperparameters PoolSize: [3 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0]
Этот слой создает области объединения размера [3 2] и берет среднее значение этих шести элементов в каждой области. Области объединения перекрываются потому что Stride
включает размерности, которые меньше соответствующих размерностей объединения PoolSize
.
Включайте средний слой объединения с наложением областей объединения в Layer
массив.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer averagePooling2dLayer([3 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 '' Average Pooling 3x2 average 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
Средний слой объединения выполняет субдискретизацию путем деления входа на прямоугольные области объединения и вычисление средних значений каждой области.
Объединяющие слои следуют за сверточными слоями для субдискретизации, следовательно, сокращая количество связей со следующими слоями. Они не выполняют изучения себя, но сокращают количество параметров, которые будут изучены в следующих слоях. Они также помогают уменьшать сверхподбор кривой.
Средний слой объединения выводит средние значения прямоугольных областей его входа. Размер прямоугольных областей определяется poolSize
аргумент averagePoolingLayer
. Например, если poolSize
[2,3], затем слой возвращает среднее значение областей высоты 2 и ширина 3.
Объединение слоев сканирует через вход горизонтально, и вертикально в размерах шага можно задать использование 'Stride'
аргумент пары "имя-значение". Если размер пула меньше, чем или равен шагу, то области объединения не перекрываются.
Для неперекрывающихся областей (Pool Size и Stride равны), если входом к слою объединения является n-by-n, и размером области объединения является h-by-h, то слой объединения прореживает области h [1]. Таким образом, выходом макс. или среднего слоя объединения для одного канала сверточного слоя является n/h-by-n/h. Для перекрывающихся областей выход слоя объединения (Input Size – Pool Size + 2*Padding)/Stride + 1.
[1] Наги, J., Ф. Дукэтелл, Г. А. Ди Каро, Д. Сиресан, У. Мейер, А. Джусти, Ф. Наги, Дж. Шмидхубер, Л. М. Гэмбарделла. ''Объединяющие Max Сверточные нейронные сети для Основанного на видении Ручного Распознавания Жеста''. Международная конференция IEEE по вопросам и Приложений для обработки изображений (ICSIPA2011), 2011 Сигнала.
convolution2dLayer
| globalAveragePooling2dLayer
| maxPooling2dLayer
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.