主要内容

averagePooling3dLayer

R2026b

3-D average pooling layer

Description

A 3-D average pooling layer performs downsampling by dividing three-dimensional input into cuboidal pooling regions, then computing the average values of each region.

The dimensions that the layer pools over depends on the layer input:

  • For 3-D image input (data with five dimensions corresponding to pixels in three spatial dimensions, the channels, and the observations), the layer pools over the spatial dimensions.

  • For 3-D image sequence input (data with six dimensions corresponding to the pixels in three spatial dimensions, the channels, the observations, and the time steps), the layer pools over the spatial dimensions.

  • For 2-D image sequence input (data with five dimensions corresponding to the pixels in two spatial dimensions, the channels, the observations, and the time steps), the layer pools over the spatial and time dimensions.

Creation

Description

layer = averagePooling3dLayer(poolSize) creates an average pooling layer and sets the PoolSize property.

layer = averagePooling3dLayer(poolSize,Name=Value) specifies options using one or more name-value arguments. For example, averagePooling3dLayer(2,Stride=2) creates a 3-D average pooling layer with a pool size of two and a stride of two.

example

Input Arguments

expand all

Size of pooling regions, specified as one of these:

  • Positive integer sz — Use sz-by-sz-by-sz pooling regions.

  • Vector of three positive integers [h w d] — Use h-by-w-by-d pooling regions.

If the stride sizes Stride are less than the respective pooling sizes, then the pooling regions overlap.

The sizes of the pooling regions must be greater than or equal to the corresponding PaddingSize values.

This argument sets the PoolSize property.

Example: [2 1 1] specifies pooling regions of height 2, width 1, and depth 1.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Name-Value Arguments

expand all

Specify optional pairs of arguments as Name1=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: averagePooling3dLayer(2,Stride=2) creates a 3-D average pooling layer with a pool size of two and a stride of two.

Input edge padding, specified as one of these values:

  • "same" — Add padding of size calculated by the software at training or prediction time so that the output has the same size as the input when the stride equals 1. If the stride is larger than 1, then the output size is ceil(inputSize/stride), where inputSize is the height, width, or depth of the input and stride is the stride in the corresponding dimension. The software adds the same amount of padding to the top and bottom, to the left and right, and to the front and back, if possible. If the padding in a given dimension has an odd value, then the software adds the extra padding to the input as postpadding. In other words, the software adds extra vertical padding to the bottom, extra horizontal padding to the right, and extra depth padding to the back of the input.

  • Nonnegative integer p — Add padding of size p to all the edges of the input.

  • Three-element vector [a b c] of nonnegative integers — Add padding of size a to the top and bottom, padding of size b to the left and right, and padding of size c to the front and back of the input.

  • 2-by-3 matrix [t l f;b r k] of nonnegative integers — Add padding of size t to the top, b to the bottom, l to the left, r to the right, f to the front, and k to the back of the input. In other words, the top row specifies the prepadding and the second row defines the postpadding in the three dimensions.

Example: Padding=1 adds one row of padding to the top and bottom, one column of padding to the left and right, and one plane of padding to the front and back of the input.

Example: Padding="same" adds padding so that the output has the same size as the input (if the stride equals 1).

Step size for traversing the input, specified as one of these:

  • positive integer sz — Traverse input with a step size of sz in the vertical, horizontal, and depth dimensions.

  • vector of three positive integers [a b c] — Traverse input with a vertical step size of a, a horizontal step size of b, and c is the step size along the depth dimension.

If the stride dimensions Stride are less than the respective pooling dimensions, then the pooling regions overlap.

This argument sets the Stride property.

Example: [2 3 1] specifies a vertical step size of 2, a horizontal step size of 3, and a step size along the depth of 1.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Properties

expand all

Average Pooling

This property is read-only after object creation. To set this property, use the corresponding positional input argument when you create the AveragePooling3DLayer object.

Size of the pooling regions, specified as a vector of three positive integers [h w d], where h is the height, w is the width, and d is the depth.

If the stride dimensions Stride are less than the respective pooling dimensions, then the pooling regions overlap.

Example: [2 1 1] specifies pooling regions of height 2, width 1, and depth 1.

Step size for traversing the input in three dimensions, specified as a vector [a b c] of three positive integers, where a is the vertical step size, b is the horizontal step size, and c is the step size along the depth direction.

When you set this property, you can also specify a scalar value to use the same value for all dimensions.

If the stride sizes are less than the corresponding pooling window sizes, then the pooling regions overlap.

Example: [2 3 1] specifies a vertical step size of 2, a horizontal step size of 3, and a step size along the depth of 1.

Data Types: double

Size of padding to apply to input borders, specified as 2-by-3 matrix [t l f;b r k] of nonnegative integers, where t and b are the padding applied to the top and bottom in the vertical direction, l and r are the padding applied to the left and right in the horizontal direction, and f and k are the padding applied to the front and back along the depth.

When you create a layer, use the Padding name-value argument to specify the padding size.

Example: [1 2 4; 1 2 4] adds one row of padding to the top and bottom, two columns of padding to the left and right, and four planes of padding to the front and back of the input.

Data Types: double

This property is read-only.

Method to determine padding size, represented as one of these:

  • 'manual' – Pad using the integer or vector specified by the Padding name-value argument.

  • 'same' – Apply padding such that the output has the same size as the input for a stride of one. If the stride is larger than 1, then the output size is ceil(inputSize/stride), where inputSize is the height, width, or depth of the input and stride is the stride in the corresponding dimension. The software adds the same amount of padding to the top and bottom, to the left and right, and to the front and back, if possible. If the padding in a given dimension has an odd value, then the software adds the extra padding to the input as postpadding. In other words, the software adds extra vertical padding to the bottom, extra horizontal padding to the right, and extra depth padding to the back of the input.

When you create a layer, use the Padding name-value argument to specify the method to determine padding size.

Value used to pad input, specified as one of these:

  • 0 — Pad the input with zeros.

  • 'mean' — Pad the input with the mean of the pooling region.

Specify the padding approach using the Padding name-value argument.

The layer includes the padded areas when it calculates of the average value of the pooling regions along the edges. Using the mean value as the padding value reduces the effect of the padding values on the calculated average values.

Data Types: double | char

Layer

Layer name, specified as a character vector. For Layer array input, the trainnet and dlnetwork functions automatically assign names to unnamed layers.

Data Types: char

This property is read-only.

Number of inputs to the layer, represented as 1. This layer has a single input only.

Data Types: double

This property is read-only.

Input name, represented as {'in'}. This layer has a single input only.

This property is read-only.

Number of outputs from the layer, represented as 1. This layer has a single output only.

Data Types: double

This property is read-only.

Output name, represented as {'out'}. This layer has a single output only.

Examples

collapse all

Create a 3-D average pooling layer with nonoverlapping pooling regions that downsamples by a factor of 2.

layer = averagePooling3dLayer(2,Stride=2)
layer = 
  AveragePooling3DLayer with properties:

            Name: ''

   Hyperparameters
        PoolSize: [2 2 2]
          Stride: [2 2 2]
     PaddingMode: 'manual'
     PaddingSize: [2×3 double]
    PaddingValue: 0

Include a 3-D average pooling layer in a Layer array.

layers = [ ...
    image3dInputLayer([28 28 28 3])
    convolution3dLayer(5,20)
    reluLayer
    averagePooling3dLayer(2,Stride=2)
    fullyConnectedLayer(10)
    softmaxLayer]
layers = 
  6×1 Layer array with layers:

     1   ''   3-D Image Input       28×28×28×3 images with 'zerocenter' normalization
     2   ''   3-D Convolution       20 5×5×5 convolutions with stride [1  1  1] and padding [0  0  0; 0  0  0]
     3   ''   ReLU                  ReLU
     4   ''   3-D Average Pooling   2×2×2 average pooling with stride [2  2  2] and padding [0  0  0; 0  0  0]
     5   ''   Fully Connected       Fully connected layer with output size 10
     6   ''   Softmax               Softmax

Create a 3-D average pooling layer with overlapping pooling regions and padding for the top and bottom of the input.

layer = averagePooling3dLayer([3 2 2],Stride=2,Padding=[1 0 0])
layer = 
  AveragePooling3DLayer with properties:

            Name: ''

   Hyperparameters
        PoolSize: [3 2 2]
          Stride: [2 2 2]
     PaddingMode: 'manual'
     PaddingSize: [2×3 double]
    PaddingValue: 0

This layer creates pooling regions of size 3-by-2-by-2 and takes the average of the twelve elements in each region. The stride is 2 in all dimensions. The pooling regions overlap because there are stride dimensions Stride that are less than the respective pooling dimensions PoolSize.

Algorithms

expand all

Version History

Introduced in R2019a