spago

module
v0.0.0-...-ab595c2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2020 License: BSD-2-Clause

README

spaGO

Go Report Card


spago-logo

spaGO is a machine learning lightweight open-source library written in Go designed to support relevant neural network architectures in natural language processing tasks.

The idea is that you could have written spaGO. Most of it, from the computational graph to the LSTM is straightforward Go code :)

Note

This README is under construction, you might consider coming back here in a few days, or go straight to the code if you're curious!

Why spaGO?

I've been writing more or less the same software for almost 20 years. I guess it's my way of learning a new language. Now it's Go's turn, and spaGO is the result of a few days of pure fun!

Let me explain a little further. It's not precisely the very same software I've been writing now for 20 years: I've been working in the NLP for this long, experimenting with different approaches and techniques, and therefore software of the same field. I've always felt satisfied to limit the use of third-party dependencies, trying to implement firsthand the features that interest me most. For instance, nowadays, you're nobody if you don't master machine learning. Seriously, NLP's state-of-the-art results have all been achieved with this approach! So, I took the opportunity to speed up my understanding of the underlying deep learning algorithms implementing them almost from scratch in straightforward Go code. I'm aware that reinventing the wheel is an anti-pattern; nevertheless, I wanted to build something with my own concepts in my own (italian) style: that's the way I learn best, and it could be your best chance to understand what's going on under the hood of the artificial intelligence :)

When I begin programming in a new language, I know almost anything about it. I often combine the techniques I have acquired by writing in other languages and other paradigms, so some choices may not be the most idiomatic... but who cares, right?

It's with this approach that I jumped on Go and created spaGo: a work in progress, (hopefully) understandable, easy to use library for machine learning and natural language processing.

Disclaimer

Please note that I can only do development in my free time (which is very limited: I am a #onewheeler, I have a wonderful wife, a Happy dog, I play the piano and the guitar, and last but not least I'm actively engaged in my daily job), so no promises are made regarding response time, feature implementations or bug fixes. If you want spaGo to become something more than just a hobby project of me, I greatly appreciate any bug reports and contributions, which can be made by filing an issue or making a pull request through the github page. Thanks!

Directories

Path Synopsis
examples
linearregression command
Example on how to build a simple linear regression model trained with a very basic linear equation i.e.
Example on how to build a simple linear regression model trained with a very basic linear equation i.e.
mnist/cnn/test command
mnist/cnn/train command
mnist/de/test command
mnist/de/train command
mnist/test command
mnist/train command
progsum command
pkg
mat
mat/internal/asm/f64
Package f64 provides float64 vector primitives.
Package f64 provides float64 vector primitives.
ml/nn/rec/mist
Implementation of the MIST (MIxed hiSTory) recurrent network as described in "Analyzing and Exploiting NARX Recurrent Neural Networks for Long-Term Dependencies" by Di Pietro et al., 2018 (https://arxiv.org/pdf/1702.07805.pdf).
Implementation of the MIST (MIxed hiSTory) recurrent network as described in "Analyzing and Exploiting NARX Recurrent Neural Networks for Long-Term Dependencies" by Di Pietro et al., 2018 (https://arxiv.org/pdf/1702.07805.pdf).
ml/nn/rec/nru
Implementation of the NRU (Non-Saturating Recurrent Units) recurrent network as described in "Towards Non-Saturating Recurrent Units for Modelling Long-Term Dependencies" by Chandar et al., 2019.
Implementation of the NRU (Non-Saturating Recurrent Units) recurrent network as described in "Towards Non-Saturating Recurrent Units for Modelling Long-Term Dependencies" by Chandar et al., 2019.
ml/nn/transformer
Reference: "Attention Is All You Need" by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser and Illia Polosukhin (2017) (http://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf).
Reference: "Attention Is All You Need" by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser and Illia Polosukhin (2017) (http://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf).
third_party

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL