gobrain alternatives and similar packages
Based on the "Machine Learning" category.
Alternatively, view gobrain alternatives based on common mentions on social networks and blogs.
-
Gorgonia
Gorgonia is a library that helps facilitate machine learning in Go. -
m2cgen
Transform ML models into a native code (Java, C, Python, Go, JavaScript, Visual Basic, C#, R, PowerShell, PHP, Dart, Haskell, Ruby, F#, Rust) with zero dependencies -
gosseract
Go package for OCR (Optical Character Recognition), by using Tesseract C++ library -
gago
:four_leaf_clover: Evolutionary optimization library for Go (genetic algorithm, partical swarm optimization, differential evolution) -
ocrserver
A simple OCR API server, seriously easy to be deployed by Docker, on Heroku as well -
onnx-go
onnx-go gives the ability to import a pre-trained neural network within Go without being linked to a framework or library. -
shield
Bayesian text classifier with flexible tokenizers and storage backends for Go -
neat
Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT). -
go-featureprocessing
๐ฅ Fast, simple sklearn-like feature processing for Go -
neural-go
A multilayer perceptron network implemented in Go, with training via backpropagation. -
go-cluster
k-modes and k-prototypes clustering algorithms implementation in Go
Access the most powerful time series database as a service
Do you think we are missing an alternative of gobrain or a related project?
Popular Comparisons
README
gobrain
Neural Networks written in go
Getting Started
The version 1.0.0
includes just basic Neural Network functions such as Feed Forward and Elman Recurrent Neural Network.
A simple Feed Forward Neural Network can be constructed and trained as follows:
package main
import (
"github.com/goml/gobrain"
"math/rand"
)
func main() {
// set the random seed to 0
rand.Seed(0)
// create the XOR representation patter to train the network
patterns := [][][]float64{
{{0, 0}, {0}},
{{0, 1}, {1}},
{{1, 0}, {1}},
{{1, 1}, {0}},
}
// instantiate the Feed Forward
ff := &gobrain.FeedForward{}
// initialize the Neural Network;
// the networks structure will contain:
// 2 inputs, 2 hidden nodes and 1 output.
ff.Init(2, 2, 1)
// train the network using the XOR patterns
// the training will run for 1000 epochs
// the learning rate is set to 0.6 and the momentum factor to 0.4
// use true in the last parameter to receive reports about the learning error
ff.Train(patterns, 1000, 0.6, 0.4, true)
}
After running this code the network will be trained and ready to be used.
The network can be tested running using the Test
method, for instance:
ff.Test(patterns)
The test operation will print in the console something like:
[0 0] -> [0.057503945708445] : [0]
[0 1] -> [0.930100635071210] : [1]
[1 0] -> [0.927809966227284] : [1]
[1 1] -> [0.097408795324620] : [0]
Where the first values are the inputs, the values after the arrow ->
are the output values from the network and the values after :
are the expected outputs.
The method Update
can be used to predict the output given an input, for example:
inputs := []float64{1, 1}
ff.Update(inputs)
the output will be a vector with values ranging from 0
to 1
.
In the example folder there are runnable examples with persistence of the trained network on file.
In example/02 the network is saved on file and in example/03 the network is loaded from file.
To run the example cd in the folder and run
go run main.go
Recurrent Neural Network
This library implements Elman's Simple Recurrent Network.
To take advantage of this, one can use the SetContexts
function.
ff.SetContexts(1, nil)
In the example above, a single context will be created initialized with 0.5
. It is also possible
to create custom initialized contexts, for instance:
contexts := [][]float64{
{0.5, 0.8, 0.1}
}
Note that custom contexts must have the same size of hidden nodes + 1 (bias node), in the example above the size of hidden nodes is 2, thus the context has 3 values.
Changelog
- 1.0.0 - Added Feed Forward Neural Network with contexts from Elman RNN