A *valid convolution* is a type of convolution operation that does not use any padding on the input.

For an \(n \times n\) input matrix and an \(f \times f\) filter, a valid convolution will return an output matrix of dimensions

\[ \left \lfloor \frac{n - f}{s} \right \rfloor + 1 \times \left \lfloor \frac{n - f}{s} \right \rfloor + 1 \]

where \(s\) is the stride length of the convolution.

This is in contrast to a same convolution, which pads the \(n \times n\) input matrix such that the output matrix is also \(n \times n\).