Java Machine Learning Library

January 2019 - June 2019

Status: Completed

This project is a custom-made neural network library for Java. It allows users to create a neural network object which can implement, train, load, and save. The library was made in a way that the different layers can be resized and configured completely allowing it to work on almost any application where a neural network is used.

Purpose of the project

This project was created in order to learn exactly how machine learning works. Although I had a basic understanding, I was curious to see exactly how it works. Therefore, I decided to create this library without using any sort of machine learning library such as TensorFlow.

Video showing the library being used to train a neural network to predict handwritten digits. The final network achieved 80% accuracy.

Outcome

After completion of this project, I now have proficiency in:

How machine learning works

Forward propagation of Neural Networks

Back propagation of Neural Networks

The project was a complete success. I trained it to around 80% accuracy when predicting handwritten digits. Since the library is extremely lightweight, it does have some advantages over larger machine learning libraries. It will be very exciting to see where this can be used in future projects.

Steps

Learn About Machine Learning

The first step, and the longest, was learning about machine learning. I did many hours of research on the mathematics and working principle behind neural networks in order to get a comprehensive idea of how they operate. After understanding them, it became much clearer on how to begin coding one.

Code and test

The next step was to code the library. This process took a little over a month, including the required debugging and testing. After completing the library, I implemented it by training a neural net to recognize and predict handwritten digits, which was able to achieve 80% accuracy.