Comparing JavaScript Neural Network Libraries

JavaScript neural networks libraries

This week my team and I started in on a project to build a semi-automated grocery list app. I won’t be going into the details of everything the project entails, but one of the things we wanted it to do was to predict whether or not an item should be added to a user’s shopping list. Right away, we thought about using a neural network to add this functionality…the only problem was that none of us had used a neural network before.

A quick Google search of “neural network javascript library” brings up four neural network libraries for JavaScript available on Github:

We started exploring each of these four to determine which would be the best choice for our project. All four have pretty snazzy demos, so we took a few days to explore them all; we also briefly look into Python’s Pybrain.

Brain.js and Mind.js both make it extremely simple to start building neural networks without much background knowledge. This makes them both fantastic introductions to the concepts involved with neural networking. However, compared to our other choices, they were fairly inflexible and did not have as complete documentation.

Both ConvNetJS and Pybrain were at the opposite end of the spectrum. These libraries come with a huge amount of documentation and are clearly very powerful. We first started looking into these libraries when we were researching reinforcement networks, as both of these libraries provide this type of network. Unfortunately, most of the documentation is written for those with extensive experience with neural networks, making it difficult for beginners like us to implement a functioning network.

Synaptic.js was the clear winner for our project. The documentaiton for this library is both extensive and accessible for novice users. Additionally, Synaptic.js provides a nice balance between power and simplicity. Like Brain.js and Mind.js, it is possible to create a fully functioning neural network with just a few lines of code. However, this library also offers multiple pre-configured network architectures and lets you build a network from scratch if you would like.

Although we chose Synaptic.js for our project, each library fits into a nice niche, so I encourage you to explore them all for yourself.

Written on August 29, 2015