This repo consists of work implenting CNN's and exploring ways of modelling context in CNN's for an assignment for Edinburgh University's Machine Learning Practical course. The framework used in this project is provided by the University and can be found on GitHub, including complete setup instructions.
The majority of work showcased in this repo is within /mlp/layers.py, including NumPy implementations of f-prop, b-prop and max pooling. Experiments were also conducted within a PyTorch framework comparing the effects of striding and dilation. The PyTorch scripts can be found in /mlp/pytorch_experiment_scripts, and some example experiments can be seen in run-experiments.sh. The experiments found dilation to be more effective at modelling context in CNN's, primarily caused by it's ability to rapidly expand its receptive field. However, if not suitable regularised, both dilation and stride were likely to overfit, giving similar performance for each. A full discussion of results can be seen in the report or this blog post.