Instead of stacking 3D feature-map planes, this 2D view draws every layer's receptive-field boundary as a nested rectangle on the single 32×32 input grid — layer L (a single output unit) is the innermost dot, layer 0 (the raw input) is the outermost frame. A conv layer with kernel k, stride s and dilation d shrinks the spatial size:
k_eff = d·(k − 1) + 1
n_out = floor((n_in − k_eff) / s) + 1
The receptive field is computed independently here via the standard backward recurrence (RF_L = 1, jump_L = 1 at the top), walked down to layer 0:
RF_(l-1) = RF_l + (k_eff − 1) · jump_l
jump_(l-1) = jump_l · s
The strip beneath the grid draws each layer's actual feature-map footprint (n_l × n_l) as a shrinking square, so you can compare "how much the map shrinks going forward" against "how far the receptive field reaches going backward" side by side.
- Layers L — how many conv layers are stacked; more layers compound the receptive field.
- Kernel size k — a larger filter directly widens the field at every layer.
- Stride s — shrinks feature maps fastest and multiplies the "jump", so later layers cover disproportionately more input per step.
- Dilation d — spreads a kernel's taps apart (à la WaveNet / DeepLab atrous convolution) without adding parameters, growing k_eff and the receptive field for free.
Real-world relevance: this exact recurrence is why deep CNNs (ResNet, VGG) need only 3×3 kernels to eventually "see" the whole image, and why dilated convolutions are used in segmentation networks to grow context cheaply.