Neural network study
Back to visual explanationsWhich digit is this?
A real handwritten digit becomes a grid of brightness values. The network receives pixels, not the correct answer.
Real test images · sample 1 of 3 per digit · labels are from the dataset
Each square is one feature map. Connections show which channels feed the next layer; yellow follows the selected channel. Watch the filters scan and the responses appear, then inspect a channel below. This is a forward pass through an already-trained model.
The image the network receives
Brightness represents the input value at each pixel. Choose another handwritten digit, rotate it or add noise to change what all subsequent layers receive.
1 channel · 32 × 32 pixels
Each map uses its own brightness scale. Brightness can be compared within a map, not between maps.
Look inside one convolution
Model and visualisation notes
This compact teaching CNN has four learned layers: three 3 × 3 convolutions (4, 8 and 12 channels), each followed by ReLU, and a 12-to-10 linear classifier. Global average pooling connects the final convolution to the classifier. It was trained from scratch on 60,000 public MNIST handwriting images, independently of any client model. The 28 × 28 images are scaled to 0–1 and padded with two black pixels on each edge.
On the separate 10,000-image test set, this model achieved 92.65% accuracy on unmodified images. The examples here are the first three test images of each digit, selected without checking their predictions. MNIST dataset and source.
Every feature map, average and score comes from a real forward pass in your browser. The yellow 3 × 3 patch spans every incoming channel. Output filters are revealed together at matching spatial positions. Animation reveals the precomputed result; it does not represent execution speed or training. Graph edges connect whole channels: every convolutional output reads every incoming channel, pooling reduces each map separately, and the classifier connects all twelve averages to all ten outputs. The graph does not draw individual spatial kernel weights. Travelling dots guide the explanation; they do not encode activation values. The smaller convolution lesson has independent input and playback controls.

