Skip to content

A library written using Go. The library allows users to create a neural network with a configurable number of neurons and layers. The library also implements backpropgation using gradient descent to gradually reduce the cost function.

Notifications You must be signed in to change notification settings

Heidar-An/NeuralNetwork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

Neural Network Go Library

What is this?

A library written using Go. The library allows users to create a neural network with a configurable number of neurons and layers.
The library also implements backpropgation using gradient descent to gradually reduce the cost function.
I tested the neural network library against the MNIST database: http://yann.lecun.com/exdb/mnist/, a list of handwritten digits.
I went through the MNIST dataset using the GoMNIST package: https://github.com/petar/GoMNIST
Lastly, I also implemented a graphical user design so that users could draw digits themselves, and test it against the neural network. This was done using the ebitengine graphical library https://ebitengine.org/

Why I did this

A feeling of wanting to learn how to use Go, and understand more about the intuition about neural networks.
Implementing backpropagation was especially difficult, (but rewarding!) as it required me to really understand how it works
Overall, it was a good project for an introduction to neural networks, and I hope to develop it further in the future!

Technologies

Go - v1.18
ebiten, ebitengine - v2.4.4
GoMNIST - v0.0.0-20150320212226-2fbe10d0fa63

Future Plans/Improvements

I plan to add some optimisers, to make it faster such as optimising matrix multiplication for caching, concurrent computation, or SIMD. I could utilise some optimsers for gradient descent such as RMSProp and Adam too.
Furthermore, I plan on augmenting it to make it a convolutional neural network. However, I might redo the project in Rust instead for that.

About

A library written using Go. The library allows users to create a neural network with a configurable number of neurons and layers. The library also implements backpropgation using gradient descent to gradually reduce the cost function.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages