Ejercicio F — la convolución y sus tres modos
La convolución desliza un arreglo pequeño — el kernel o filtro — sobre uno más grande, multiplicando y sumando en cada posición. Es la operación en el corazón de toda red neuronal convolucional, y es también como funciona todo filtro de desenfoque, enfoque y detección de bordes.
x = np.array([1., 2., 3., 4., 5.])
k = np.array([1., 0., -1.])
np.convolve(x, k, 'full') # longitud 5+3-1 = 7
np.convolve(x, k, 'valid') # longitud 5-3+1 = 3
np.convolve(x, k, 'same') # longitud 5
valid usa solo las posiciones donde el kernel cabe completamente: por eso la convolución encoge una imagen en kernel_size - 1.