Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/areberoto/mnist-nn-classifier

Shallow Neural Network implemented using C++ that learns how to classify handwritten digits with 84.42% precision using the MNIST dataset.
https://github.com/areberoto/mnist-nn-classifier

classification-algorithm machine-learning mnist-dataset neural-network

Last synced: 10 days ago
JSON representation

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

Awesome Lists containing this project

README

        

# 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](https://user-images.githubusercontent.com/44409207/124809456-c19ce100-df25-11eb-9368-1da92592e3a4.png)