We chose to replicate this model to showcase the performance of a much more complex model, with almost 1 million parameters. In our training step, we took 5h 30min to fit it and achieved an accuracy of 99.54% over the test set. It is important to notice that libraries like tensorflow and pytorch are designed to run models with the GPU, taking much less time through their parallel computing. However this computer did not have GPU, thus used the CPU for processing.

While we achieved an accuracy of 99.54%, the author was capable of achieving an accuracy of 99.67% with data augmentation and by applying different optimizer and learning rate annealer, which will not be studied here.

Final Model Prediction

One important topic to notice is that Convolutional Neural Networks have their parameters randomly initialized. Therefore to evaluate the real performance, we should train multiple times and take the average value for every model. However our foccus here is just illustrate different architectures and analyze the possibilities of employing convolutional neural networks, so only running and training once is enough.

In our studied models, the best accuracy was 99.54% with the last model. We will use it to predict the test set and show some of the errors.

By analyzing the wrong predictions it becomes clear that some of these digits are misleading and hard to predict even for humans. Due to the human ability to write outside of any standard, it is relatively impossible to obtain 100% accuracy.

The studies performed here were intended to demonstrate the variety of convolutional neural networks, with countless possibilities of structures, use of layers and hyperparameters. Thus, the complexity of models can vary, and their ability to solve a problem, the number of parameters and time to train as well.