Thanks for the update @mefmef! Just to clarify, sum(a*b) isn’t a convolution - it’s a ‘dot product’. To make a convolution, you have to shift the kernel over every part of the whole image, like you see in the link you provided. At each point, you can use the sum(a*b) to calculate the value of the convolution at that point. In practice, that would be very slow, which is why we need to use the special pytorch function, which is optimized for the GPU.