We know that applying a convolution repeatedly to an image reduces its size, but what if we would like to go in the opposite direction; that is, go from the shape of the output to the shape of the input while still maintaining local connectivity. To do this, we use transposed convolution, which draws its name from matrix transposition (which you should remember from Chapter 1, Vector Calculus).
Let's suppose we have a 4 × 4 input and a 3 × 3 kernel. Then, we can rewrite the kernel as a 4 × 16 matrix, which we can use for matrix multiplications to carry out our convolutions. This looks as follows:
If you look closely, ...