averagePooling2dLayer

Средний слой объединения

Описание

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

Создание

Описание

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' - Добавить заполнение размера, вычисленного программным обеспечением во время обучения или предсказания, так что выход имеет тот же размер, что и вход, когда шаг равен 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).

Свойства

расширить все

Среднее объединение

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

Значение, используемое для заполнения входа, задается как 0 или 'mean'.

Когда вы используете 'Padding' опция добавления дополнения к входу, значение приложенного дополнения может быть одним из следующих:

  • 0 - Вход заполнен нулями в положениях, заданных 'Padding' опция. Заполненные области включаются в расчет среднего значения областей объединения по краям.

  • 'mean' - Вход заполняется средним значением области объединения в положениях, заданных 'Padding' опция. Заполненные области эффективно исключаются из вычисления среднего значения каждой области объединения.

Пример: 'PaddingValue','mean'

Примечание

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

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

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

Слой

Имя слоя, заданное как вектор символов или строковый скаляр. Чтобы включить слой в график слоев, необходимо задать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с слоем и Name установлено в ''затем программа автоматически присваивает слою имя во время обучения.

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

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

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

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

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

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

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

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

Типы данных: 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]
    PaddingValue: 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]
    PaddingValue: 0

Высота и ширина прямоугольных областей (размер пула) равны 2. Области объединения не перекрываются, потому что размер шага для прохождения изображений вертикально и горизонтально (stride) также равен 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]
    PaddingValue: 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

Подробнее о

расширить все

Ссылки

[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.

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

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

.

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

.
Введенный в R2016a