Numpy implementation of various CNN architectural components like convolution layer, pooling layer(max, min, avg etc) fully-connected layer, using matrix multiplications instead of loops. Works with multi-channel input with padding and n-kernel layers.
Pending improvements
- implement batch image convolution support
Note
This implementation is inspired from the matrix multiplication techniques laid out in Stanford's CS231n, CNNs for VR website. One should note that there is always a compromise in terms of either speed or memory when optimising algorithms, atleast in most of the cases. iterating through a matrix with special constraints always requires tiling up the indices, which is a memory intensive process if the matrix is huge. But we benefit from the optimised matrix multiplication interface numpy uses, which is ATLAS, an open-source implementation of BLAS in C.