# How can a convnet learn with a 3x3 output layer?

I was studying the "Deep Learning with Python" book, I came across this MNIST example and this is how the last conv2d layer looks like:

_________________________________________________________________
conv2d_2 (Conv2D)            (None, 3, 3, 64)          36928
=================================================================


I have a hard time understanding how can this neural network figure out any feature from such a small image like 3x3 pixels. It would make sense to me if it were something like 10x10 but a 3x3 image makes no sense when I look at one, yet the network can achieve %99+ validation accuracy. How is this possible?

• Do you know what (None, 3, 3, 64) means? Because it seems that you're assuming that the input image to the convolutional network is 3x3. 3x3 is probably the size of the kernel. So, please, edit your post to clarify that.
– nbro
May 29, 2022 at 11:27
• @nbro I think I have a vague understanding of what these parameters means, I don't think it is the kernel. It is the output shape from a conv2d layer. May 29, 2022 at 13:24
• Well, which software library is the author of the book using? You should edit your post to include this detail. The answer below assumed that you're using TensorFlow/Keras, and that's probably a good guess.
– nbro
May 31, 2022 at 15:35