Most common convolutional neural networks contains pooling layers to reduce the dimensions of output features. Why couldn't I achieve the same thing by simply increase the stride of the convolutional layer? What makes the pooling layer necessary?


You can indeed do that, see Striving for Simplicity: The All Convolutional Net. Pooling gives you some amount of translation invariance, which may or may not be helpful. Also, pooling is faster to compute than convolutions. Still, you can always try replacing pooling by convolution with stride and see what works better.

Some current works use average pooling (Wide Residual Networks, DenseNets), others use convolution with stride (DelugeNets)

  • $\begingroup$ I asked one of my friends about this and he said the pooling layers are better because it introduces non-linearity. Do you agree? $\endgroup$ – user3667089 Jul 8 '17 at 16:38
  • 9
    $\begingroup$ Hm not so sure I agree. Some kind of nonlinearity is already present in the networks through the activation functions. Average pooling also does not introduce any additional nonlinearity, it is a linear operation so only max pooling is nonlinear. And I think the question is more if you want the regularization that pooling brings you - a little more translational invariance. $\endgroup$ – robintibor Jul 9 '17 at 20:32
  • $\begingroup$ Isn't doing less convolutions (e.g. stride=2) faster than doing 4x as many convolutions and pooling combined? $\endgroup$ – Mateen Ulhaq May 17 '20 at 6:03
  • $\begingroup$ It depends on what you replace with what. I was assuming a choice between A: conv (stride=1) + max pooling or B: conv (stride=1) + conv (stride=2). If you instead assume A: conv (stride=1) + max pooling replaced by B: conv (stride=2) things become different (B is then faster of course). $\endgroup$ – robintibor May 18 '20 at 11:50

Apparently max pooling helps because it extracts the sharpest features of an image. So given an image, the sharpest features are the best lower-level representation of an image. https://www.quora.com/What-is-the-benefit-of-using-average-pooling-rather-than-max-pooling

But according to Andrew Ng's Deep Learning lecture, max pooling works well but no one knows why. Quote -> "But I have to admit, I think the main reason people use max pooling is because it's been found in a lot of experiments to work well, ... I don't know of anyone fully knows if that is the real underlying reason."


Pooling mainly helps in extracting sharp and smooth features. It is also done to reduce variance and computations. Max-pooling helps in extracting low-level features like edges, points, etc. While Avg-pooling goes for smooth features. If time constraint is not a problem, then one can skip the pooling layer and use a convolutional layer to do the same. Refer this.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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