
Company News
Socket Has Acquired Secure Annex
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.
git.godevs.top/nlpodyssey/spago
Advanced tools
If you like the project, please ā
star this repository to show your support! š¤©
If you're interested in NLP-related functionalities, be sure to explore the Cybertron package!
Spago is a Machine Learning library written in pure Go designed to support relevant neural architectures in Natural Language Processing.
Spago is self-contained, in that it uses its own lightweight computational graph both for training and inference, easy to understand from start to finish.
It provides:
Requirements:
Clone this repo or get the library:
go get -u github.com/nlpodyssey/spago
A good place to start is by looking at the implementation of built-in neural models, such as the LSTM.
Here is an example of how to calculate the sum of two variables:
package main
import (
"fmt"
"log"
"github.com/nlpodyssey/spago/ag"
"github.com/nlpodyssey/spago/mat"
)
func main() {
// define the type of the elements in the tensors
type T = float32
// create a new node of type variable with a scalar
a := mat.Scalar(T(2.0), mat.WithGrad(true)) // create another node of type variable with a scalar
b := mat.Scalar(T(5.0), mat.WithGrad(true)) // create an addition operator (the calculation is actually performed here)
c := ag.Add(a, b)
// print the result
fmt.Printf("c = %v (float%d)\n", c.Value(), c.Value().Item().BitSize())
c.AccGrad(mat.Scalar(T(0.5)))
if err := ag.Backward(c); err != nil {
log.Fatalf("error during Backward(): %v", err)
}
fmt.Printf("ga = %v\n", a.Grad())
fmt.Printf("gb = %v\n", b.Grad())
}
Output:
c = [7] (float32)
ga = [0.5]
gb = [0.5]
Here is a simple implementation of the perceptron formula:
package main
import (
"fmt"
. "github.com/nlpodyssey/spago/ag"
"github.com/nlpodyssey/spago/mat"
)
func main() {
x := mat.Scalar(-0.8)
w := mat.Scalar(0.4)
b := mat.Scalar(-0.2)
y := Sigmoid(Add(Mul(w, x), b))
fmt.Printf("y = %0.3f\n", y.Value().Item())
}
If you think something is missing or could be improved, please open issues and pull requests.
To start contributing, check the Contributing Guidelines.
We highly encourage you to create an issue as it will contribute to the growth of the community. However, if you prefer to communicate with us privately, please feel free to email Matteo Grella with any questions or comments you may have.
Spago is part of the open-source NLP Odyssey initiative initiated by members of the EXOP team (now part of Crisis24).
See our Open Collective page if you too are interested in becoming a sponsor.
FAQs
Unknown package
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.

Research
/Security News
Socket is tracking cloned Open VSX extensions tied to GlassWorm, with several updated from benign-looking sleepers into malware delivery vehicles.

Product
Reachability analysis for PHP is now available in experimental, helping teams identify which vulnerabilities are actually exploitable.