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' (time), задайте область объединения с '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' (time), задайте область объединения с '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' (time), задайте область объединения с 'T' размерность с помощью 'PoolFormat' опция.

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

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

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

The Stride параметр не поддерживается для глобального объединения с использованием 'global' опция.

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

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

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

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

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

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

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

The '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 возвращается со следующим порядком размерности: все 'S' размерности, далее 'C', 'B', и 'T' размерности, затем все 'U' размерности. Размер indx соответствует размеру dlY когда dlY переопределяется так, чтобы соответствовать ранее установленному порядку размерности.

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

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

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

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

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

Подробнее о

свернуть все

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

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

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

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

Поведение изменено в R2020a

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

Введенный в R2019b