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.
Con el recorte real de 160×160 del cuaderno 13 y el kernel Sobel de 3×3: valid da 158×158, same da 160×160 y full da 162×162.