Максимальный уровень объединения
Уровень максимального объединения выполняет понижающую дискретизацию путем разделения входных данных на прямоугольные области объединения и вычисления максимума каждой области.
создает максимальный уровень пула и устанавливает layer = maxPooling2dLayer(poolSize)PoolSize собственность.
устанавливает необязательный layer = maxPooling2dLayer(poolSize,Name,Value)Stride, Name, и HasUnpoolingOutputs с использованием пар имя-значение. Чтобы указать заполнение ввода, используйте 'Padding' аргумент пары имя-значение. Например, maxPooling2dLayer(2,'Stride',3) создает максимальный уровень пула с размером пула [2 2] и stride [3 3]. Можно указать несколько пар имя-значение. Заключите каждое имя свойства в отдельные кавычки.
Используйте аргументы пары имя-значение, разделенные запятыми, чтобы указать размер заполнения, добавляемого вдоль краев входного слоя, и задать значение Stride, Name, и HasUnpoolingOutputs свойства. Заключите имена в одинарные кавычки.
maxPooling2dLayer(2,'Stride',3) создает максимальный уровень пула с размером пула [2 2] и stride [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. В этом случае уровень max pooling имеет два дополнительных выхода, которые можно подключить к уровню max unpooling:
'indices' - индексы максимального значения в каждой объединенной области.
'size' - размер карты входных характеристик.
Для включения выходов на максимальный уровень расхолаживания области пула максимального уровня пула должны быть неперекрывающимися.
Дополнительные сведения о распаковке выходных данных максимального уровня пула см. в разделе maxUnpooling2dLayer.
Name - Имя слоя'' (по умолчанию) | символьный вектор | строковый скаляр
Имя слоя, указанное как символьный вектор или строковый скаляр. Чтобы включить слой в график слоев, необходимо указать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с уровнем и Name имеет значение ''затем программа автоматически присваивает имя слою во время обучения.
Типы данных: char | string
NumInputs - Количество входовКоличество входов слоя. Этот слой принимает только один вход.
Типы данных: double
InputNames - Входные имена{'in'} (по умолчанию)Входные имена слоя. Этот слой принимает только один вход.
Типы данных: cell
NumOutputs - Количество выходовКоличество выходов уровня.
Если HasUnpoolingOutputs значение равно false, то максимальный уровень пула имеет один выход с именем 'out'.
Чтобы использовать выходные данные максимального уровня пула в качестве входных данных максимального уровня сброса, установите значение HasUnpoolingOutputs значение для true. В этом случае уровень max pooling имеет два дополнительных выхода, которые можно подключить к уровню max unpooling:
'indices' - индексы максимального значения в каждой объединенной области.
'size' - размер карты входных характеристик.
Для включения выходов на максимальный уровень расхолаживания области пула максимального уровня пула должны быть неперекрывающимися.
Дополнительные сведения о распаковке выходных данных максимального уровня пула см. в разделе maxUnpooling2dLayer.
Типы данных: double
OutputNames - Имена выходных данных{'out'} (по умолчанию) | {'out','indices','size'}Выходные имена слоя.
Если HasUnpoolingOutputs значение равно false, то максимальный уровень пула имеет один выход с именем 'out'.
Чтобы использовать выходные данные максимального уровня пула в качестве входных данных максимального уровня сброса, установите значение HasUnpoolingOutputs значение для true. В этом случае уровень max pooling имеет два дополнительных выхода, которые можно подключить к уровню max unpooling:
'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. Области объединения не перекрываются, поскольку размер шага для прохождения изображений по вертикали и горизонтали (шаг) также равен [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' аргумент пары имя-значение. Если размер пула меньше или равен шагу, то области объединения не перекрываются.
Для неперекрывающихся областей (размер пула и страйд равны), если вход на уровень объединения равен n-by-n, а размер области объединения равен h-by-h, то уровень объединения выполняет выборку областей по h [1]. То есть выходной сигнал максимального или среднего уровня объединения для одного канала сверточного уровня равен n/h-by-n/h. Для перекрывающихся областей выходом уровня объединения является (Input Size - Pool Size + 2 * Padding )/Stride + 1.
[1] Наги, Дж., Ф. Дюкатель, Г. А. Ди Каро, Д. Сиресан, У. Мейер, А. Джусти, Ф. Наги, Дж. Шмидхубер, Л. М. Гамбарделла. «Макс. объединение сверточных нейронных сетей для распознавания жестов рук на основе зрения». Международная конференция IEEE по применению обработки сигналов и изображений (ICSIPA2011), 2011.
averagePooling2dLayer | convolution2dLayer | globalAveragePooling2dLayer | maxUnpooling2dLayer
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.