exponenta event banner

maxpool

Максимальное значение данных пула

Описание

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

maxpool функция применяет операцию максимального объединения к dlarray данные. Используя dlarray объекты упрощают работу с высокоразмерными данными, позволяя маркировать размеры. Например, можно пометить, какие измерения соответствуют пространственным, временным, канальным и пакетным измерениям, используя 'S', 'T', 'C', и 'B' соответственно. Для неуказанных и других размеров используйте 'U' этикетка. Для dlarray функции объекта, которые работают над определенными размерами, можно указать метки размеров, отформатировав dlarray непосредственно или с помощью 'DataFormat' вариант.

Примечание

Применение максимального пула в пределах layerGraph объект или Layer используйте один из следующих слоев:

пример

dlY = maxpool(dlX,poolsize) применяет операцию максимального объединения к отформатированному dlarray объект dlX. Функция понижает выборку входных данных, разделяя их на области, определяемые poolsize и вычисляют максимальное значение данных в каждой области. Продукция dlY является отформатированным dlarray с теми же метками размеров, что и dlX.

Функция по умолчанию объединяет до трех измерений dlX маркированный 'S' (пространственный). Объединение по размерам с метками 'T' (время), укажите область объединения с 'T' измерение с использованием 'PoolFormat' вариант.

Для неформатированных входных данных используйте 'DataFormat' вариант.

[dlY,indx,inputSize] = maxpool(dlX,poolsize) также возвращает линейные индексы максимального значения в каждой объединенной области и размер карты входных признаков dlX для использования с maxunpool функция.

пример

dlY = maxpool(dlX,'global') вычисляет глобальный максимум по пространственным размерам входа dlX. Этот синтаксис эквивалентен параметру poolsize в предыдущих синтаксисах до размера 'S' размеры dlX.

___ = maxpool(___,'DataFormat',FMT) применяет операцию максимального объединения к неформатированной dlarray объект dlX с форматом, указанным FMT с использованием любого из предыдущих синтаксисов. Продукция dlY является неформатированным dlarray объект с размерами в том же порядке, что и dlX. Например, 'DataFormat','SSCB' указывает данные для 2-D максимального пула с форматом 'SSCB' (пространственный, пространственный, канальный, пакетный).

пример

___ = maxpool(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение. Например, 'PoolFormat','T' задает область пула для пула 1-D с форматом 'T' (время).

Примеры

свернуть все

Создание форматированного dlarray объект, содержащий партию 128 изображений 28 на 28 с 3 каналами. Укажите формат 'SSCB' (пространственный, пространственный, канальный, пакетный).

miniBatchSize = 128;
inputSize = [28 28];
numChannels = 3;
X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);
dlX = dlarray(X,'SSCB');

Просмотр размера и формата входных данных.

size(dlX)
ans = 1×4

    28    28     3   128

dims(dlX)
ans = 
'SSCB'

Применение 2-D максимального пула с окнами пула 2 на 2 с помощью maxpool функция.

poolSize = [2 2];
dlY = maxpool(dlX,poolSize);

Просмотр размера и формата выходных данных.

size(dlY)
ans = 1×4

    27    27     3   128

dims(dlY)
ans = 
'SSCB'

Создание форматированного dlarray объект, содержащий партию 128 изображений 28 на 28 с 3 каналами. Укажите формат 'SSCB' (пространственный, пространственный, канальный, пакетный).

miniBatchSize = 128;
inputSize = [28 28];
numChannels = 3;
X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);
dlX = dlarray(X,'SSCB');

Просмотр размера и формата входных данных.

size(dlX)
ans = 1×4

    28    28     3   128

dims(dlX)
ans = 
'SSCB'

Применение 2-D глобального максимального пула с помощью maxpool путем указания 'global' вариант.

dlY = maxpool(dlX,'global');

Просмотр размера и формата выходных данных.

size(dlY)
ans = 1×4

     1     1     3   128

dims(dlY)
ans = 
'SSCB'

Создание форматированного dlarray объект, содержащий партию из 128 последовательностей длиной 100 с 12 каналами. Укажите формат 'CBT' (канал, партия, время).

miniBatchSize = 128;
sequenceLength = 100;
numChannels = 12;
X = rand(numChannels,miniBatchSize,sequenceLength);
dlX = dlarray(X,'CBT');

Просмотр размера и формата входных данных.

size(dlX)
ans = 1×3

    12   128   100

dims(dlX)
ans = 
'CBT'

Примените 1-D максимальное объединение с областями объединения размера 2 с шагом 2, используя maxpool путем указания 'PoolFormat' и 'Stride' варианты.

poolSize = 2;
dlY = maxpool(dlX,poolSize,'PoolFormat','T','Stride',2);

Просмотр размера и формата выходных данных.

size(dlY)
ans = 1×3

    12   128    50

dims(dlY)
ans = 
'CBT'

Создание форматированного dlarray объект, содержащий партию 128 изображений 28 на 28 с 3 каналами. Укажите формат 'SSCB' (пространственный, пространственный, канальный, пакетный).

miniBatchSize = 128;
inputSize = [28 28];
numChannels = 3;
X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);
dlX = dlarray(X,'SSCB');

Просмотр размера и формата входных данных.

size(dlX)
ans = 1×4

    28    28     3   128

dims(dlX)
ans = 
'SSCB'

Объедините данные до максимальных значений по областям объединения размера 2, используя шаг 2.

[dlY,indx,dataSize] = maxpool(dlX,2,'Stride',2);

Просмотр размера и формата объединенных данных.

size(dlY)
ans = 1×4

    14    14     3   128

dims(dlY)
ans = 
'SSCB'

Просмотр размера данных.

dataSize
dataSize = 1×4

    28    28     3   128

Распакуйте данные с помощью индексов и размера данных из maxpool операция.

dlY = maxunpool(dlY,indx,dataSize);

Просмотр размера и формата незаполненных данных.

size(dlY)
ans = 1×4

    28    28     3   128

dims(dlY)
ans = 
'SSCB'

Создание форматированного dlarray объект, содержащий партию из 128 последовательностей длиной 100 с 12 каналами. Укажите формат 'CBT' (канал, партия, время).

miniBatchSize = 128;
sequenceLength = 100;
numChannels = 12;
X = rand(numChannels,miniBatchSize,sequenceLength);
dlX = dlarray(X,'CBT');

Просмотр размера и формата входных данных.

size(dlX)
ans = 1×3

    12   128   100

dims(dlX)
ans = 
'CBT'

Примените 1-D максимальное объединение с областями объединения размера 2 с шагом 2, используя maxpool путем указания 'PoolFormat' и 'Stride' варианты.

poolSize = 2;
[dlY,indx,dataSize] = maxpool(dlX,poolSize,'PoolFormat','T','Stride',2);

Просмотр размера и формата выходных данных.

size(dlY)
ans = 1×3

    12   128    50

dims(dlY)
ans = 
'CBT'

Распакуйте данные с помощью индексов и размера данных из maxpool операция.

dlY = maxunpool(dlY,indx,dataSize);

Просмотр размера и формата незаполненных данных.

size(dlY)
ans = 1×3

    12   128   100

dims(dlY)
ans = 
'CBT'

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

свернуть все

Входные данные, указанные как форматированные или неформатированные dlarray объект.

Если dlX является неформатированным dlarray, то необходимо указать формат с помощью 'DataFormat' вариант.

Функция по умолчанию объединяет до трех измерений dlX маркированный 'S' (пространственный). Объединение по размерам с метками 'T' (время), укажите область объединения с 'T' измерение с использованием 'PoolFormat' вариант.

Размер областей пула, заданный как числовой скалярный или числовой вектор.

Чтобы использовать область пула с краями одинакового размера, укажите poolsize как скаляр. Области объединения имеют одинаковый размер по всем измерениям, указанным в 'PoolFormat'.

Чтобы использовать область пула с краями различных размеров, укажите poolsize как вектор, где poolsize(i) - размер соответствующего размера в 'PoolFormat'.

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Stride',2 определяет шаг областей пула как 2.

Размерный порядок неформатированных входных данных, указанный как разделенная запятыми пара, состоящая из 'DataFormat' и вектор символов или строковый скаляр FMT с меткой для каждого измерения данных.

При указании формата dlarray каждый символ обеспечивает метку для каждого измерения данных и должен быть одним из следующих:

  • 'S' - Пространственный

  • 'C' - Канал

  • 'B' - Партия (например, пробы и наблюдения)

  • 'T' - Время (например, временные шаги последовательностей)

  • 'U' - Не указано

Можно указать несколько размеров с метками 'S' или 'U'. Можно использовать метки 'C', 'B', и 'T' максимум один раз.

Необходимо указать 'DataFormat' если входные данные не являются отформатированными dlarray.

Пример: 'DataFormat','SSCB'

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

Порядок измерения области объединения, указанный как пара, разделенная запятыми, состоящая из 'PoolFormat' и вектор символов или строковый скаляр, который обеспечивает метку для каждого измерения области объединения.

Значение по умолчанию 'PoolFormat' зависит от задачи:

ЗадачаДефолт
1-D объединение'S' (пространственный)
2-D объединение'SS' (пространственный, пространственный)
3-D объединение'SSS' (пространственный, пространственный, пространственный)

Формат должен иметь либо нет 'S' (пространственные) размеры или столько же 'S' (пространственные) размеры в качестве входных данных.

Функция по умолчанию объединяет до трех измерений dlX маркированный 'S' (пространственный). Объединение по размерам с метками 'T' (время), укажите область объединения с 'T' измерение с использованием 'PoolFormat' вариант.

Пример: 'PoolFormat','T'

Размер шага для прохождения входных данных, указанный как разделенная запятыми пара, состоящая из 'Stride' и числовой скалярный или числовой вектор. При указании 'Stride' в качестве скаляра используется одно и то же значение для всех пространственных измерений. При указании 'Stride' в качестве вектора того же размера, что и количество пространственных измерений входных данных, используют значения вектора для соответствующих пространственных измерений.

Значение по умолчанию 'Stride' является 1. Если 'Stride' меньше, чем poolsize в любом измерении области объединения перекрываются.

Stride не поддерживается для глобального пула с помощью 'global' вариант.

Пример: 'Stride',3

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

Размер заполнения, применяемого к краям данных, определяемый как разделенная запятыми пара, состоящая из 'Padding' и одно из следующих:

  • 'same' - Размер заполнения устанавливается таким образом, чтобы выходной размер совпадал с входным размером, когда шаг 1. В более общем случае выходной размер каждого пространственного измерения равен ceil(inputSize/stride), где inputSize - размер входного сигнала вдоль пространственного размера.

  • Числовой скаляр - одинаковая величина заполнения применяется к обоим концам всех пространственных размеров.

  • Числовой вектор - вдоль каждого пространственного размера применяется различная величина заполнения. Использовать вектор размера d, где d - количество пространственных измерений входных данных. i-й элемент вектора определяет размер заполнения, применяемого к началу и концу вдоль i-й пространственный размер.

  • Числовая матрица - к началу и концу каждого пространственного размера применяется разная величина заполнения. Использовать матрицу размера 2-by-d, где d - количество пространственных измерений входных данных. Элемент (1,d) задает размер заполнения, применяемого к началу пространственного размера d. Элемент (2,d) задает размер заполнения, применяемого к концу пространственного размера d. Например, в 2-D формат [top, left; bottom, right].

'Padding' не поддерживается для глобального пула с помощью 'global' вариант.

Пример: 'Padding','same'

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

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

свернуть все

Объединенные данные, возвращенные как dlarray с тем же базовым типом данных, что и dlX.

Если входные данные dlX является отформатированным dlarray, то dlY имеет тот же формат, что и dlX. Если входные данные не являются форматированными dlarray, то dlY является неформатированным dlarray с тем же порядком размеров, что и входные данные.

Индексы максимальных значений в каждой объединенной области, возвращаемые как dlarray. Каждое значение в indx представляет расположение соответствующего максимального значения в dlY, заданный как линейный индекс значений в dlX.

Если dlX является отформатированным dlarray, indx имеет тот же размер и формат, что и вывод dlY.

Если dlX не является отформатированным dlarray, indx является неформатированным dlarray. В этом случае indx возвращается со следующим порядком измерения: all 'S' размеры, за которыми следуют 'C', 'B', и 'T' размеры, затем все 'U' размеры. Размер indx соответствует размеру dlY когда dlY переставляется в соответствии с ранее указанным порядком измерения.

Используйте indx выходные данные с помощью maxunpool функция для распаковки выходного сигнала maxpool.

indx не поддерживается при использовании 'global' вариант.

Размер карты входных элементов, возвращаемый в виде числового вектора.

Используйте inputSize выходные данные с помощью maxunpool функция для распаковки выходного сигнала maxpool.

inputSize не поддерживается при использовании 'global' вариант.

Подробнее

свернуть все

Максимальное объединение в пул

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

Вопросы совместимости

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

В R2020a изменилось поведение

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

Представлен в R2019b