Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/surenderthakran/gomind
A simplistic Neural Network Library in Go
https://github.com/surenderthakran/gomind
go golang machine-learning neural-network
Last synced: about 2 months ago
JSON representation
A simplistic Neural Network Library in Go
- Host: GitHub
- URL: https://github.com/surenderthakran/gomind
- Owner: surenderthakran
- License: gpl-3.0
- Created: 2017-10-19T03:48:51.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2022-05-08T21:10:38.000Z (over 2 years ago)
- Last Synced: 2024-07-31T20:52:15.965Z (4 months ago)
- Topics: go, golang, machine-learning, neural-network
- Language: Go
- Homepage:
- Size: 73.2 KB
- Stars: 81
- Watchers: 7
- Forks: 8
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - GoMind - A simplistic Neural Network Library in Go. (Machine Learning / Search and Analytic Databases)
- awesome-golang-ai - gomid
- zero-alloc-awesome-go - GoMind - A simplistic Neural Network Library in Go. (Machine Learning / Search and Analytic Databases)
- awesome-go - gomind - A simplistic Neural Network Library in Go - ★ 5 (Machine Learning)
- awesome-go-extra - gomind - 10-19T03:48:51Z|2022-05-08T21:10:38Z| (Machine Learning / Advanced Console UIs)
- awesome-go-zh - GoMind
README
# GoMind
[![Build Status](https://travis-ci.com/surenderthakran/gomind.svg?branch=master)](https://travis-ci.com/surenderthakran/gomind)
[![GoDoc](https://godoc.org/github.com/surenderthakran/gomind?status.png)](https://godoc.org/github.com/surenderthakran/gomind)
[![codecov](https://codecov.io/gh/surenderthakran/gomind/branch/master/graph/badge.svg)](https://codecov.io/gh/surenderthakran/gomind)
[![Go Report Card](https://goreportcard.com/badge/github.com/surenderthakran/gomind)](https://goreportcard.com/report/github.com/surenderthakran/gomind)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://github.com/singhsurender/gomind/blob/master/LICENSE)## Installation
```
go get github.com/surenderthakran/gomind
```## About
GoMind is a neural network library written entirely in Go.
It only supports a single hidden layer (for now).
The network learns from a training set using back-propagation algorithm.Some of the salient features of GoMind are:
- Supports following activation functions:
- Linear (Default)
- [Sigmoid](https://en.wikipedia.org/wiki/Sigmoid_function)
- [ReLU](https://en.wikipedia.org/wiki/Rectifier_(neural_networks))
- [Leaky ReLU](https://en.wikipedia.org/wiki/Rectifier_%28neural_networks%29#Leaky_ReLUs)
- Smartly estimates ideal number of hidden layer neurons (if a count is not given during model configuration) for given input and output sizes.
- Uses [Mean Squared Error function](https://en.wikipedia.org/wiki/Mean_squared_error) to calculate error while back propagating.Note: To understand the basic functioning of back-propagation in neural networks, one can refer to my blog [here](https://www.surenderthakran.com/articles/tech/implement-back-propagation-neural-network).
## Usage
```
package mainimport (
"github.com/singhsurender/gomind"
)func main() {
trainingSet := [][][]float64{
[][]float64{[]float64{0, 0}, []float64{0}},
[][]float64{[]float64{0, 1}, []float64{1}},
[][]float64{[]float64{1, 0}, []float64{1}},
[][]float64{[]float64{1, 1}, []float64{0}},
}mind, err := gomind.New(&gomind.ModelConfiguration{
NumberOfInputs: 2,
NumberOfOutputs: 1,
NumberOfHiddenLayerNeurons: 16,
HiddenLayerActivationFunctionName: "relu",
OutputLayerActivationFunctionName: "sigmoid",
})
if err != nil {
return nil, fmt.Errorf("unable to create neural network. %v", err)
}for i := 0; i < 500; i++ {
rand := rand.Intn(4)
input := trainingSet[rand][0]
output := trainingSet[rand][1]if err := mind.LearnSample(input, output); err != nil {
mind.Describe(true)
return nil, fmt.Errorf("error while learning from sample input: %v, target: %v. %v", input, output, err)
}actual := mind.LastOutput()
outputError, err := mind.CalculateError(output)
if err != nil {
mind.Describe(true)
return nil, fmt.Errorf("error while calculating error for input: %v, target: %v and actual: %v. %v", input, output, actual, err)
}outputAccuracy, err := mind.CalculateAccuracy(output)
if err != nil {
mind.Describe(true)
return nil, fmt.Errorf("error while calculating error for input: %v, target: %v and actual: %v. %v", input, output, actual, err)
}fmt.Println("Index: %v, Input: %v, Target: %v, Actual: %v, Error: %v, Accuracy: %v\n", i, input, output, actual, outputError, outputAccuracy)
}
}
```## API Documentation
The documentation for various methods exposed by the library can be found at: [https://godoc.org/github.com/surenderthakran/gomind](https://godoc.org/github.com/surenderthakran/gomind)