gorgonia
GitHub - gorgonia/gorgonia: Gorgonia is a library that helps facilitate machine learning in Go.
Gorgonia is a library that helps facilitate machine learning in Go. Write and evaluate mathematical equations involving multidimensional arrays easily. If this sounds like Theano or TensorFlow, it's because the idea is quite similar. Specifically, the library is pretty low-level, like Theano, but has higher goals like Tensorflow. The primary goal for Gorgonia is to be a highly performant machine learning/graph computation-based library that can scale across multiple machines.
Training Neural Networks with Gorgonia
Deep learning and neural networks are very interesting subjects and Go language supports this technology using the framework Gorgonia. Gorgonia works like similar frameworks, for example, Tensorflow, allowing the creation of graphs of operations and tensors. There isn't something like Keras for Gorgonia, although the project Golgi is promising. The programming is a little low level, because we have to create the graphs containing the operations and the tensors, so there is no concept of neuron or layers, which exists in other frameworks. In this post, I will show a very basic example of MLP - Multilayer Perceptron trying to find the weights for an approximation of the exclusive disjunction function or XOR.
Think like a vertex: using Go's concurrency for graph computation
Why do you do machine learning in Go? Of course, the main reason is that I like the language. But there are other, more generic, reasons. In the fifth episode of the third season of Command Line Heroes, Saron Yitbarek exposes the fact that Go's design is tidily linked to the cloud infrastructure. Indeed, the concurrency mechanism makes it super easy to write a program the can run at scale on inexpensive machines.
Google's Go language ventures into machine learning
Machine learning developers who want to use Google's Go language as their development platform have a small but growing number of projects to choose from. Rather than call out to libraries written in other languages, chiefly C/C, developers can work with machine learning libraries written directly in Go. Existing machine learning libraries in other languages have a far larger culture of users, but there's clearly an interest in having Go toolkits that take advantage of the language's conveniences. GoLearn, described as a "batteries included" machine learning library, is one of the most prominent. "Simplicity, paired with customisability, is the goal," the developers write in their introduction to the project.
Google's Go language ventures into machine learning
Machine learning developers who want to use Google's Go language as their development platform have a small but growing number of projects to choose from. Rather than call out to libraries written in other languages, chiefly C/C, developers can work with machine learning libraries written directly in Go. Existing machine learning libraries in other languages have a far larger culture of users, but there's clearly an interest in having Go toolkits that take advantage of the language's conveniences. GoLearn, described as a "batteries included" machine learning library, is one of the most prominent. "Simplicity, paired with customisability, is the goal," the developers write in their introduction to the project.
Gorgonia
I released Gorgonia on Thursday. Gorgonia is a library like Theano or TensorFlow, but mainly written in Go. It provides the necessary primitives for creating and executing neural networks and machine learning algorithms. But the original version is about 80,000 LoC (though most of the lines of codes were different experimental variations of assembly code). I managed to cut down 50,000 LoC to something more manageable. In this post I want to outline the release of Gorgonia, and share some of the reasoning regarding the design of the library, as well as go thru some of the weirdness found in the library. If you're interested, here's the video (otherwise, skip to the meat): In the beginning, there was Theano.