Skip to content

Shallow Neural Network implemented using C++ that learns how to classify handwritten digits with 84.42% precision using the MNIST dataset.

License

Notifications You must be signed in to change notification settings

areberoto/mnist-nn-classifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MNIST Classifier using a Shallow Neural Network in C++

Project's background

This project was originally developed as my final assignment for the Applied Programming class I took at University. The main objective was to apply the skills and methods learned thoughout the semester and write a good C++ application. The application was free to choose, and I decided to create a Shallow Neural Network from scratch, without using any Machine Learning (ML) framework.

At that time I was new to ML, specifically to Deep Learning, so I struggled to create this Shallow NN. Unfortunately, the final accuracy precision was too low (84.42%) on the test set and the NN took too long to train, so I always knew there was something not right on the source-code. Almost three years after I delivered my assignment I came back to this project, and wanted to improve it and finally be able to achieve better results.

Motivation

Over the last decades machine learning has become very popular since new algorithms were developed and more complex implementations of neural networks became possible, opening a new world of possibilities and solutions. Nowdays it is very common to use tools and software that already have machine learning algorithms implemented, and people only need to know the necessary theory to acomplish systems that learn and do what they need. Still, when working with machine learning, it is very important to understand the basics and go deeper into the algorithms so students get a better understanding of these mathematical tools and later get more involved with AI without much trouble. This is why it was decided to implement a Shallow Neural Network from scratch in C++ that learns how to classify handwritten digits with 84.42% precision using the MNIST dataset. We did not use any machine learning library and everything was implemented in C++.

Block diagram of this application

Diagram

About

Shallow Neural Network implemented using C++ that learns how to classify handwritten digits with 84.42% precision using the MNIST dataset.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published