LeNet Proved Deep Learning Works, One Layer at a Time
Before CNNs were a default assumption, someone had to prove the idea worked end to end on a real task. LeNet did that: a small convolutional architecture built for digit recognition, and its structure is worth walking through because every later CNN is a variation on the same seven-layer idea. It applies hierarchical learning, simple patterns in early layers building up to complex ones in later layers, and it's simple and efficient enough to work well even on small datasets.
The input is a grayscale image. Every convolutional and pooling layer that follows has its own trainable-parameter count, computed the same way throughout:
Layer C1 is a convolutional layer: 6 filters, each , stride 1, no padding, taking the input down to a feature map with trainable parameters. Layer S2 pools that down with a filter, stride 2, giving with just 12 parameters, since pooling only learns a coefficient and bias per filter, not a full kernel. Layer C3 applies 16 new filters across all 6 input channels, producing with parameters. Layer S4 pools again down to with 32 parameters.
At this point the spatial structure is small enough to flatten. Layer C5 is fully connected, taking the values down to 120 units, with parameters, the single largest jump in the whole network. Layer S6 is another fully connected layer, 120 down to 84 units. The output layer finally maps those 84 units to 10 classes, one per digit.
What jumps out laid end to end like this: the convolutional layers are cheap (156, then 1516 parameters) while the fully connected layers are enormous by comparison (48120, then thousands more). Convolution's weight sharing keeps early layers lean; it's only once the network flattens into dense connections that the parameter count explodes. That asymmetry is exactly why modern architectures push convolutional layers as deep as they can before ever reaching for a fully connected one.