Interactive Explainer
Why 1×1 Convolutions Save Compute
A $3\times3$ convolution that maps many channels to many channels is expensive: cost grows with $C_{\text{in}}\times C_{\text{out}}$. Inception's trick is to squeeze the channels down with a cheap $1\times1$ convolution first, do the pricey $3\times3$ on the narrow stack, and it can come out several times cheaper for the same output shape. Slide the channel counts and watch the two bars diverge.
Direct vs. bottleneck, in FLOPs
Both paths take a $C_{\text{in}}$-channel feature map of size $H\times W$ and produce a $C_{\text{out}}$-channel map of the same spatial size. The direct path does one $3\times3$ convolution. The bottleneck path first projects to $C_{\text{mid}}$ channels with a $1\times1$ convolution, then does the $3\times3$ on that narrower stack. The bars below are total multiply–adds, drawn to scale.
Where the factor comes from
For an output of $H\times W$ pixels and $C_{\text{out}}$ channels, each output value is a dot product over a $K\times K \times C_{\text{in}}$ patch, so a convolution costs
Putting the two paths side by side (with $K=3$ for the spatial conv, $K=1$ for the projection):
- The expensive $3\times3$ now runs on $C_{\text{mid}}$ input channels instead of $C_{\text{in}}$ — that is where the big saving lives.
- The extra $1\times1$ costs only $HW\,C_{\text{in}}C_{\text{mid}}$: cheap, because a $1\times1$ has no spatial extent, just a per-pixel channel mix.
- Net win whenever $C_{\text{mid}}$ is small relative to $C_{\text{in}}$ and $C_{\text{out}}$ — the whole point of a bottleneck.