maxPooling2dLayer

Слой субдискретизации по максимуму

Описание

2D макс. слой объединения выполняет субдискретизацию путем деления входа на прямоугольные области объединения, затем вычисляя максимум каждой области.

Создание

Описание

layer = maxPooling2dLayer(poolSize) создает макс. слой объединения и устанавливает PoolSize свойство.

пример

layer = maxPooling2dLayer(poolSize,Name,Value) устанавливает дополнительный StrideИмя, и HasUnpoolingOutputs свойства с помощью пар "имя-значение". Чтобы задать входное дополнение, используйте 'Padding' аргумент пары "имя-значение". Например, maxPooling2dLayer(2,'Stride',3) создает макс. слой объединения с размером пула [2 2] и шаг [3 3]. Можно задать несколько пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.

Входные параметры

развернуть все

Аргументы в виде пар имя-значение

Используйте разделенные от запятой аргументы пары "имя-значение", чтобы задать размер дополнения, чтобы добавить вдоль ребер входа слоя и установить StrideИмя, и HasUnpoolingOutputs свойства. Заключите имена в одинарные кавычки.

Пример: maxPooling2dLayer(2,'Stride',3) создает макс. слой объединения с размером пула [2 2] и шаг [3 3].

Введите дополнение ребра в виде разделенной запятой пары, состоящей из '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).

Свойства

развернуть все

Объединение Max

Размерности областей объединения в виде вектора из двух положительных целых чисел [h w], где h высота и w ширина. При создании слоя можно задать PoolSize как скаляр, чтобы использовать то же значение для обеих размерностей.

Если размерности шага Stride меньше соответствующих размерностей объединения, затем перекрытие областей объединения.

Дополнительные размерности PaddingSize должен быть меньше размерностей области объединения PoolSize.

Пример: [2 1] задает области объединения высоты 2 и ширина 1.

Размер шага для того, чтобы пересечь вход вертикально и горизонтально в виде вектора из двух положительных целых чисел [a b], где a вертикальный размер шага и b горизонтальный размер шага. При создании слоя можно задать Stride как скаляр, чтобы использовать то же значение для обеих размерностей.

Если размерности шага Stride меньше соответствующих размерностей объединения, затем перекрытие областей объединения.

Дополнительные размерности PaddingSize должен быть меньше размерностей области объединения PoolSize.

Пример: [2 3] задает вертикальный размер шага 2 и горизонтальный размер шага 3.

Размер дополнения, чтобы применяться к входному граничит в виде векторного [t b l r] из четырех неотрицательных целых чисел, где t дополнение, применился к верхней части, b дополнение, применился к нижней части, l дополнение, примененное налево, и r дополнение, примененное направо.

Когда вы создадите слой, используйте 'Padding' аргумент пары "имя-значение", чтобы задать дополнительный размер.

Пример: [1 1 2 2] добавляют одна строка дополнения к верху и низу и два столбца дополнения налево и права на вход.

Метод, чтобы определить дополнительный размер в виде 'manual' или 'same'.

Программное обеспечение автоматически устанавливает значение PaddingMode на основе 'Padding' значение вы задаете при создании слоя.

  • Если вы устанавливаете 'Padding' опция к скаляру или вектору из неотрицательных целых чисел, затем программное обеспечение автоматически устанавливает PaddingMode к 'manual'.

  • Если вы устанавливаете 'Padding' опция к 'same', затем программное обеспечение автоматически устанавливает PaddingMode к 'same' и вычисляет размер дополнения в учебное время так, чтобы выход имел тот же размер как вход, когда шаг равняется 1. Если шаг больше, чем 1, то выходным размером является ceil(inputSize/stride), где inputSize высота или ширина входа и stride шаг в соответствующей размерности. Программное обеспечение добавляет то же самое значение дополнения к верху и низу, и налево и право, если это возможно. Если дополнение, которое должно быть добавлено вертикально, имеет нечетное значение, то программное обеспечение добавляет дополнительное дополнение в нижнюю часть. Если дополнение, которое должно быть добавлено горизонтально, имеет нечетное значение, то программное обеспечение добавляет дополнительное дополнение направо.

Примечание

Padding свойство будет удалено в будущем релизе. Используйте PaddingSize вместо этого. При создании слоя используйте 'Padding' аргумент пары "имя-значение", чтобы задать дополнительный размер.

Размер дополнения, чтобы применяться к входному граничит вертикально и горизонтально в виде векторного [a b] из двух неотрицательных целых чисел, где a дополнение, применился к верху и низу входных данных и b дополнение, применился к левому и правому.

Пример: [1 1] добавляют одна строка дополнения к верху и низу и один столбец дополнения налево и права на вход.

Отметьте для выходных параметров к необъединению слоя в виде true или false.

Если HasUnpoolingOutputs значение равняется false, затем макс. слой объединения имеет один выход с именем 'out'.

Чтобы использовать выход макс. слоя объединения как вход к макс. слою необъединения, установите HasUnpoolingOutputs значение к true. В этом случае макс. слой объединения имеет два дополнительных выходных параметров, которые можно соединить с макс. слоем необъединения:

  • 'indices' — Индексы максимального значения в каждой объединенной области.

  • 'size' — Размер входа показывает карту.

Чтобы включить выходные параметры к макс. слою необъединения, области объединения макс. слоя объединения должны не перекрываться.

Для получения дополнительной информации о том, как не объединить выход макс. слоя объединения, смотрите maxUnpooling2dLayer.

Слой

Имя слоя в виде вектора символов или строкового скаляра. Для Layer вход массивов, trainNetwork, assembleNetwork, layerGraph, и dlnetwork функции автоматически присваивают имена к слоям с Name установите на ''.

Типы данных: char | string

Это свойство доступно только для чтения.

Количество входных параметров слоя. Этот слой принимает один вход только.

Типы данных: double

Это свойство доступно только для чтения.

Введите имена слоя. Этот слой принимает один вход только.

Типы данных: cell

Количество выходных параметров слоя.

Если HasUnpoolingOutputs значение равняется false, затем макс. слой объединения имеет один выход с именем 'out'.

Чтобы использовать выход макс. слоя объединения как вход к макс. слою необъединения, установите HasUnpoolingOutputs значение к true. В этом случае макс. слой объединения имеет два дополнительных выходных параметров, которые можно соединить с макс. слоем необъединения:

  • 'indices' — Индексы максимального значения в каждой объединенной области.

  • 'size' — Размер входа показывает карту.

Чтобы включить выходные параметры к макс. слою необъединения, области объединения макс. слоя объединения должны не перекрываться.

Для получения дополнительной информации о том, как не объединить выход макс. слоя объединения, смотрите maxUnpooling2dLayer.

Типы данных: double

Выведите имена слоя.

Если 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. Области объединения не перекрываются, потому что размером шага для того, чтобы пересечь изображения вертикально и горизонтально (шаг) является также [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

Больше о

развернуть все

Ссылки

[1] Наги, J., Ф. Дукэтелл, Г. А. Ди Каро, Д. Сиресан, У. Мейер, А. Джусти, Ф. Наги, Дж. Шмидхубер, Л. М. Гэмбарделла. ''Объединяющие Max Сверточные нейронные сети для Основанного на видении Ручного Распознавания Жеста''. Международная конференция IEEE по вопросам и Приложений для обработки изображений (ICSIPA2011), 2011 Сигнала.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Введенный в R2016a