exponenta event banner

averagePooling2dLayer

Средний уровень объединения

Описание

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

Создание

Описание

layer = averagePooling2dLayer(poolSize) создает уровень среднего пула и устанавливает PoolSize собственность.

пример

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

Входные аргументы

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

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

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

Пример: averagePooling2dLayer(2,'Stride',2) создает средний уровень пула с размером пула [2 2] и stride [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. Области объединения не перекрываются, поскольку размер шага для прохождения изображений по вертикали и горизонтали (шаг) также равен 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] Наги, Дж., Ф. Дюкатель, Г. А. Ди Каро, Д. Сиресан, У. Мейер, А. Джусти, Ф. Наги, Дж. Шмидхубер, Л. М. Гамбарделла. «Макс. объединение сверточных нейронных сетей для распознавания жестов рук на основе зрения». Международная конференция IEEE по применению обработки сигналов и изображений (ICSIPA2011), 2011.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

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

.
Представлен в R2016a