averagePooling2dLayer

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

Описание

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

Создание

Описание

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 опция. Заполненные области эффективно исключены из вычисления среднего значения каждой области объединения.

Примечание

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

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

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

Слой

Имя слоя в виде вектора символов или строкового скаляра. Для Layer вход массивов, trainNetwork, assembleNetwork, layerGraph, и dlnetwork функции автоматически присваивают имена к слоям с 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] Наги, J., Ф. Дукэтелл, Г. А. Ди Каро, Д. Сиресан, У. Мейер, А. Джусти, Ф. Наги, Дж. Шмидхубер, Л. М. Гэмбарделла. ''Объединяющие Max Сверточные нейронные сети для Основанного на видении Ручного Распознавания Жеста''. Международная конференция IEEE по вопросам и Приложений для обработки изображений (ICSIPA2011), 2011 Сигнала.

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

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

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

Введенный в R2016a