Transposed convolution is overlap-add
Transposed convolution runs convolution’s arrow the other way. Convolution gathers: every output is a sum over the inputs under the window. Transposed convolution scatters: each input value multiplies a whole copy of the kernel, the scaled copy is placed in the output, and where copies overlap they add. That is overlap-add.
H_out = (H - 1) * S + K # input H, kernel K, stride S
For the notebook’s real 2×2 patch and a 2×2 all-ones kernel: stride 1 gives 3×3, stride 2 gives 4×4, stride 3 gives 5×5.
It gives back the shape, never the values. A larger output does not mean lost detail has been recovered, which is why calling it a “deconvolution layer” misleads.