avgpool - Pool data to average values over spatial dimensions - MATLAB (original) (raw)

Pool data to average values over spatial dimensions

Syntax

Description

The average pooling operation performs downsampling by dividing the input into pooling regions and computing the average value of each region.

The avgpool function applies the average pooling operation to dlarray data.Using dlarray objects makes working with high dimensional data easier by allowing you to label the dimensions. For example, you can label which dimensions correspond to spatial, time, channel, and batch dimensions using the"S", "T", "C", and"B" labels, respectively. For unspecified and other dimensions, use the"U" label. For dlarray object functions that operate over particular dimensions, you can specify the dimension labels by formatting thedlarray object directly, or by using the DataFormat option.

[Y](#mw%5F6985aeb9-0dae-4145-b715-d3d9766efc24%5Fsep%5Fmw%5Fc8c9f66e-db98-4bf9-b126-f0ea5d6ff98c) = avgpool([X](#mw%5F6985aeb9-0dae-4145-b715-d3d9766efc24%5Fsep%5Fmw%5Fb7e3b93f-d4e2-4e5f-8c9b-fc92609d6f5c),[poolsize](#mw%5F6985aeb9-0dae-4145-b715-d3d9766efc24%5Fsep%5Fmw%5Fe5c47fe1-f9be-42f3-abf9-0867a5dfe210)) applies the average pooling operation to the formatted dlarray objectX. The function downsamples the input by dividing it into regions defined by poolsize and calculating the average value of the data in each region. The output Y is a formatted dlarray with the same dimension format as X.

The function, by default, pools over up to three dimensions ofX labeled "S" (spatial). To pool over dimensions labeled "T" (time), specify a pooling region with a "T" dimension using the PoolFormat option.

example

[Y](#mw%5F6985aeb9-0dae-4145-b715-d3d9766efc24%5Fsep%5Fmw%5Fc8c9f66e-db98-4bf9-b126-f0ea5d6ff98c) = avgpool([X](#mw%5F6985aeb9-0dae-4145-b715-d3d9766efc24%5Fsep%5Fmw%5Fb7e3b93f-d4e2-4e5f-8c9b-fc92609d6f5c),'global') computes the global average over the spatial dimensions of the input X. This syntax is equivalent to setting poolsize in the previous syntax to the size of the 'S' dimensions of X.

example

[Y](#mw%5F6985aeb9-0dae-4145-b715-d3d9766efc24%5Fsep%5Fmw%5Fc8c9f66e-db98-4bf9-b126-f0ea5d6ff98c) = avgpool(___,'DataFormat',FMT) applies the average pooling operation to the unformatted dlarray objectX with format specified by FMT using any of the previous syntaxes. The output Y is an unformatteddlarray object with dimensions in the same order asX. For example, 'DataFormat','SSCB' specifies data for 2-D average pooling with format 'SSCB' (spatial, spatial, channel, batch).

[Y](#mw%5F6985aeb9-0dae-4145-b715-d3d9766efc24%5Fsep%5Fmw%5Fc8c9f66e-db98-4bf9-b126-f0ea5d6ff98c) = avgpool(___,[Name,Value](#namevaluepairarguments)) specifies options using one or more name-value pair arguments. For example,'PoolFormat','T' specifies a pooling region for 1-D pooling with format'T' (time).

example

Examples

collapse all

Perform 2-D Average Pooling

Create a formatted dlarray object containing a batch of 128 28-by-28 images with 3 channels. Specify the format 'SSCB' (spatial, spatial, channel, batch).

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

View the size and format of the input data.

Apply 2-D average pooling with 2-by-2 pooling regions using the avgpool function.

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

View the size and format of the output.

Perform 2-D Global Average Pooling

Create a formatted dlarray object containing a batch of 128 28-by-28 images with 3 channels. Specify the format 'SSCB' (spatial, spatial, channel, batch).

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

View the size and format of the input data.

Apply 2-D global average pooling using the avgpool function by specifying the 'global' option.

dlY = avgpool(dlX,'global');

View the size and format of the output.

Perform 1-D Average Pooling

Create a formatted dlarray object containing a batch of 128 sequences of length 100 with 12 channels. Specify the format 'CBT' (channel, batch, time).

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

View the size and format of the input data.

Apply 1-D average pooling with pooling regions of size 2 with a stride of 2 using the avgpool function by specifying the 'PoolFormat' and 'Stride' options.

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

View the size and format of the output.

Input Arguments

collapse all

X — Input data

dlarray

Input data, specified as a formatted or unformatted dlarray object.

If X is an unformatted dlarray, then you must specify the format using the DataFormat option.

The function, by default, pools over up to three dimensions ofX labeled "S" (spatial). To pool over dimensions labeled "T" (time), specify a pooling region with a "T" dimension using the PoolFormat option.

poolsize — Size of pooling regions

positive integer | vector of positive integers

Size of the pooling regions, specified as a numeric scalar or numeric vector.

To pool using a pooling region with edges of the same size, specify poolsize as a scalar. The pooling regions have the same size along all dimensions specified by 'PoolFormat'.

To pool using a pooling region with edges of different sizes, specify poolsize as a vector, where poolsize(i) is the size of corresponding dimension in 'PoolFormat'.

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: 'Stride',2 specifies the stride of the pooling regions as2.

DataFormat — Description of data dimensions

character vector | string scalar

Description of the data dimensions, specified as a character vector or string scalar.

A data format is a string of characters, where each character describes the type of the corresponding data dimension.

The characters are:

For example, consider an array containing a batch of sequences where the first, second, and third dimensions correspond to channels, observations, and time steps, respectively. You can specify that this array has the format "CBT" (channel, batch, time).

You can specify multiple dimensions labeled "S" or "U". You can use the labels "C", "B", and"T" once each, at most. The software ignores singleton trailing"U" dimensions after the second dimension.

If the input data is not a formatted dlarray object, then you must specify the DataFormat option.

For more information, see Deep Learning Data Formats.

Data Types: char | string

PoolFormat — Description of pooling dimensions

character vector | string scalar

Description of pooling dimensions, specified as a character vector or string scalar that provides a label for each dimension of the pooling region.

The default value of PoolFormat depends on the task:

Task Default
1-D pooling "S" (spatial)
2-D pooling "SS" (spatial, spatial)
3-D pooling "SSS" (spatial, spatial, spatial)

The format must have either no "S" (spatial) dimensions, or as many "S" (spatial) dimensions as the input data.

The function, by default, pools over up to three dimensions ofX labeled "S" (spatial). To pool over dimensions labeled "T" (time), specify a pooling region with a "T" dimension using the PoolFormat option.

For more information, see Deep Learning Data Formats.

Stride — Step size for traversing input data

1 (default) | numeric scalar | numeric vector

Step size for traversing the input data, specified as the comma-separated pair consisting of'Stride' and a numeric scalar or numeric vector. If you specify'Stride' as a scalar, the same value is used for all spatial dimensions. If you specify 'Stride' as a vector of the same size as the number of spatial dimensions of the input data, the vector values are used for the corresponding spatial dimensions.

The default value of 'Stride' is 1. If 'Stride' is less than poolsize in any dimension, then the pooling regions overlap.

The Stride parameter is not supported for global pooling using the'global' option.

Example: 'Stride',3

Data Types: single | double

Padding — Size of padding applied to edges of data

0 (default) | 'same' | numeric scalar | numeric vector | numeric matrix

Size of padding applied to edges of data, specified as the comma-separated pair consisting of 'Padding' and one of the following:

The 'Padding' parameter is not supported for global pooling using the 'global' option.

Example: 'Padding','same'

Data Types: single | double

PaddingValue — Value used to pad input

0 (default) | "mean"

Value used to pad input, specified as 0 or"mean".

When you use the Padding option to add padding to the input, the value of the padding applied can be one of the following:

Output Arguments

collapse all

Y — Pooled data

dlarray

Pooled data, returned as a dlarray with the same underlying data type as X.

If the input data X is a formatted dlarray, thenY has the same format as X. If the input data is not a formatted dlarray, then Y is an unformatted dlarray with the same dimension order as the input data.

More About

collapse all

Deep Learning Array Formats

Most deep learning networks and functions operate on different dimensions of the input data in different ways.

For example, an LSTM operation iterates over the time dimension of the input data, and a batch normalization operation normalizes over the batch dimension of the input data.

To provide input data with labeled dimensions or input data with additional layout information, you can use data formats.

A data format is a string of characters, where each character describes the type of the corresponding data dimension.

The characters are:

For example, consider an array containing a batch of sequences where the first, second, and third dimensions correspond to channels, observations, and time steps, respectively. You can specify that this array has the format "CBT" (channel, batch, time).

To create formatted input data, create a dlarray object and specify the format using the second argument.

To provide additional layout information with unformatted data, specify the formats using the DataFormat andPoolFormat arguments.

For more information, see Deep Learning Data Formats.

Extended Capabilities

C/C++ Code Generation

Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

GPU Code Generation

Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Usage notes and limitations:

GPU Arrays

Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.

The avgpool function supports GPU array input with these usage notes and limitations:

For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).

Version History

Introduced in R2019b