Максимальный слой объединения
Максимальный слой объединения выполняет понижающую дискретизацию, разделяя вход на прямоугольные области объединения и вычисляя максимальное значение каждой области.
создает максимальный слой объединения и устанавливает layer
= maxPooling2dLayer(poolSize
)PoolSize
свойство.
устанавливает дополнительный layer
= maxPooling2dLayer(poolSize
,Name,Value
)Stride
, Name
, и HasUnpoolingOutputs
свойства с использованием пар "имя-значение". Чтобы задать вход сигнала, используйте 'Padding'
аргумент пары "имя-значение". Для примера, maxPooling2dLayer(2,'Stride',3)
создает максимальный слой объединения с размером пула [2 2]
и перемещение [3 3]
. Можно задать несколько пары "имя-значение". Заключайте каждое имя свойства в одинарные кавычки.
Используйте аргументы пары "имя-значение", разделенные запятыми, чтобы задать размер заполнения для добавления вдоль ребер входа слоя и задать Stride
, Name
, и HasUnpoolingOutputs
свойства. Имена заключаются в одинарные кавычки.
maxPooling2dLayer(2,'Stride',3)
создает максимальный слой объединения с размером пула [2 2]
и перемещение [3 3]
.'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).
PoolSize
- Размерности областей объединенияРазмерности областей объединения, заданные как вектор двух положительных целых чисел [h w]
, где h
- высота и w
- ширина. При создании слоя можно задать PoolSize
в качестве скаляра для использования одинакового значения для обеих размерностей.
Если размерности шага Stride
меньше, чем соответствующие размерности объединения, тогда области объединения перекрываются.
Заполнение размерностей PaddingSize
должно быть меньше, чем размерности области объединения PoolSize
.
Пример:
[2 1] задает области объединения высоты 2 и ширины 1.
Stride
- Размер шага для обхода входа[1 1]
(по умолчанию) | вектор из двух положительных целых чиселРазмер шага для прохождения входа вертикально и горизонтально, заданный как вектор двух положительных целых чисел [a b]
, где a
- размер и b
вертикального шага - горизонтальный размер шага. При создании слоя можно задать
Stride
в качестве скаляра для использования одинакового значения для обеих размерностей.
Если размерности шага Stride
меньше, чем соответствующие размерности объединения, тогда области объединения перекрываются.
Заполнение размерностей PaddingSize
должно быть меньше, чем размерности области объединения PoolSize
.
Пример:
[2 3] задает размер шага по вертикали 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] добавляет одну строку заполнения в верхнюю часть и снизу и один столбец заполнения слева и справа от входа.
HasUnpoolingOutputs
- Флаг для выходов на слой отмены охлажденияfalse
(по умолчанию) | true
Флаг для выходов на слой отмены охлаждения, заданный как true
или false
.
Если на HasUnpoolingOutputs
значение равно false
, тогда максимальный слой объединения имеет один выход с именем 'out'
.
Чтобы использовать выход максимального слоя объединения в качестве входа для максимального слоя отмены охлаждения, установите HasUnpoolingOutputs
значение в true
. В этом случае максимальный слой объединения имеет два дополнительных выхода, которые можно соединить с максимальным слоем отмены охлаждения:
'indices'
- Индексы максимального значения в каждой объединенной области.
'size'
- Размер входной карты функций.
Чтобы включить выходы для максимального слоя отмены охлаждения, области объединения для максимального слоя объединения должны быть неперекрывающимися.
Для получения дополнительной информации о том, как отменить объединение выхода максимального слоя объединения, смотрите maxUnpooling2dLayer
.
Name
- Имя слоя''
(по умолчанию) | символьный вектор | строковый скаляр
Имя слоя, заданное как вектор символов или строковый скаляр. Чтобы включить слой в график слоев, необходимо задать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с слоем и Name
установлено в ''
затем программа автоматически присваивает слою имя во время обучения.
Типы данных: char
| string
NumInputs
- Количество входовКоличество входов слоя. Этот слой принимает только один вход.
Типы данных: double
InputNames
- Входные имена{'in'}
(по умолчанию)Входные имена слоя. Этот слой принимает только один вход.
Типы данных: cell
NumOutputs
- Количество выходовКоличество выходов слоя.
Если на HasUnpoolingOutputs
значение равно false
, тогда максимальный слой объединения имеет один выход с именем 'out'
.
Чтобы использовать выход максимального слоя объединения в качестве входа для максимального слоя отмены охлаждения, установите HasUnpoolingOutputs
значение в true
. В этом случае максимальный слой объединения имеет два дополнительных выхода, которые можно соединить с максимальным слоем отмены охлаждения:
'indices'
- Индексы максимального значения в каждой объединенной области.
'size'
- Размер входной карты функций.
Чтобы включить выходы для максимального слоя отмены охлаждения, области объединения для максимального слоя объединения должны быть неперекрывающимися.
Для получения дополнительной информации о том, как отменить объединение выхода максимального слоя объединения, смотрите maxUnpooling2dLayer
.
Типы данных: double
OutputNames
- Выходные имена{'out'}
(по умолчанию) | {'out','indices','size'}
Выходные имена слоя.
Если на HasUnpoolingOutputs
значение равно false
, тогда максимальный слой объединения имеет один выход с именем 'out'
.
Чтобы использовать выход максимального слоя объединения в качестве входа для максимального слоя отмены охлаждения, установите HasUnpoolingOutputs
значение в true
. В этом случае максимальный слой объединения имеет два дополнительных выхода, которые можно соединить с максимальным слоем отмены охлаждения:
'indices'
- Индексы максимального значения в каждой объединенной области.
'size'
- Размер входной карты функций.
Чтобы включить выходы для максимального слоя отмены охлаждения, области объединения для максимального слоя объединения должны быть неперекрывающимися.
Для получения дополнительной информации о том, как отменить объединение выхода максимального слоя объединения, смотрите maxUnpooling2dLayer
.
Типы данных: cell
Создайте максимальный слой объединения с неперекрывающимися областями объединения.
layer = maxPooling2dLayer(2,'Stride',2)
layer = MaxPooling2DLayer with properties: Name: '' HasUnpoolingOutputs: 0 NumOutputs: 1 OutputNames: {'out'} Hyperparameters PoolSize: [2 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0]
Высота и ширина прямоугольных областей (размер пула) равны 2. Области объединения не перекрываются, потому что размер шага для прохождения изображений вертикально и горизонтально (stride) также [2 2]
.
Включите максимальный слой объединения с неперекрывающимися областями в 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
Создайте максимальный слой объединения с перекрывающимися областями объединения.
layer = maxPooling2dLayer([3 2],'Stride',2)
layer = MaxPooling2DLayer with properties: Name: '' HasUnpoolingOutputs: 0 NumOutputs: 1 OutputNames: {'out'} 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 maxPooling2dLayer([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 '' Max Pooling 3x2 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
Максимальный слой объединения выполняет понижающую дискретизацию, разделяя вход на прямоугольные области объединения и вычисляя максимальное значение каждой области.
Слои объединения следуют сверточным слоям для понижающей дискретизации, следовательно, уменьшая количество соединений со следующими слоями. Они не сами выполняют никакого обучения, а уменьшают количество параметров, которые будут выучены в следующих слоях. Они также помогают уменьшить сверхподбор кривой.
Максимальный слой объединения возвращает максимальные значения прямоугольных областей его входа. Размер прямоугольных областей определяется poolSize
аргумент maxPoolingLayer
. Для примера, если 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] Nagi, J., F. Ducatelle, G. A. Di Caro, D. Ciresan, U. Meier, A. Giusti, F. Nagi, J. Schmidhuber, L. M. Gambardella. Max-Pooling Convolutional Neural Networks for Vision-based Hand Gesture Recognition (неопр.) (недоступная ссылка). IEEE International Conference on Signal and Image Processing Applications (ICSIPA2011), 2011.
averagePooling2dLayer
| convolution2dLayer
| globalAveragePooling2dLayer
| maxUnpooling2dLayer
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.