I understand max pooling in CNNs can help decrease the computational load due to downsampling.

Another thing mentioned is that max pooling can help provide a sort of "spatial invariance" for learned features.

So essentially if say the upper left corner of an image has some feature let's say a circle, then max pooling might help in case that same circle is say shifted to the right slightly? Whereas had we not used max pooling this feature might seem like something new to the CNN despite it only being shifted by a small amount.

I have a hard time sort of understanding why. I understand that (assuming no padding is used) that the next layer holds a smaller size image. In deep learning for python this passage on why a CNN without small pooling isn't good states:

"It isn’t conducive to learning a spatial hierarchy of features. The 3 × 3 windows in the third layer will only contain information coming from 7 × 7 windows in the initial input. The high-level patterns learned by the convnet will still be very small with regard to the initial input, which may not be enough to learn to classify digits (try recognizing a digit by only looking at it through windows that are 7 × 7 pixels!). We need the features from the last convolution layer to contain information about the totality of the input."

What the model looks like:

Layer (type)                     Output Shape          Param #


conv2d_4 (Conv2D)                (None, 26, 26, 32)    320

conv2d_5 (Conv2D)                (None, 24, 24, 64)    18496

conv2d_6 (Conv2D)                (None, 22, 22, 64)    36928

Total params: 55,744
Trainable params: 55,744
Non-trainable params: 0

I get that the third layer contains info about a smaller chunk of the main input image which just happens due to convolution. So can max pooling almost be thought of as normalizing? And this makes sure the "totality" is preserved? If so that makes sense to me, but I just wanted to make sure I understood the concept right. So I suppose it would be wrong to feed a 22*22 output from the third layer considering that the third layer really only knows about 7*7 windows of the input image. Is this what the author is saying here? That seems to make more sense now that I typed it out.


1 Answer 1


The pooling layers are a very important part of CNN architectures. The main idea is to "accumulate" features from strides or maps generated by convolving a filter over an image.

Purpose is to gradually reduce the spatial size of representations to reduce the amount of parameters and computations in the network. They also, help in providing a sort of "spatial invariance" for learned features because of feature aggregation.

There are multiple types of pooling layers:

  1. Max-Pool (most common)
  2. Average-Pool
  3. Min-Pool

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.