averagePooling2dLayer

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

Описание

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

Создание

Синтаксис

layer = averagePooling2dLayer(poolSize)
layer = averagePooling2dLayer(poolSize,Name,Value)

Описание

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

Примечание

Свойство 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]

Включайте среднее объединение в массив 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

Больше о

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

Ссылки

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

Введенный в R2016a

Для просмотра документации необходимо авторизоваться на сайте