Why does a 1D convolution increase the size of the output, while a 2D convolution tends to decrease (such as in a CNN?) The function np.convolve is a 1D convolution (e.g. when both inputs are 1D). It results in a larger output size.
>>> import numpy as np
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> np.convolve(a,b)
array([ 4, 13, 28, 27, 18])

However typically in CNNs, each convolution layer reduces the size of the incoming image. What causes this distinction between 2D and 1D convolutions?

The short answer is: this is how convolution works. As you can see e.g. in the examples at https://en.wikipedia.org/wiki/Convolution the support of the convolution is larger than that of the convoluted functions:

As Sycorax mentions, sometimes the tails are omitted for practical reasons. Note that in some application (signal processing comes to my mind) omitting the tails might be an error.
