# Varis

Neural Networks with GO

## About Package

Some time ago I decided to learn Go language and neural networks. So it's my variation of Neural Networks library. I tried to make library for programmers (not for mathematics).

For now Varis is 0.1 version.

I would be happy if someone can find errors and give advices. Thank you. Artem.

## Main features

- All neurons and synapses are goroutines.
- Golang channels for connecting neurons.
- No dependencies

## Installation

```
go get github.com/Xamber/Varis
```

## Usage

```
package main
import (
"github.com/Xamber/Varis"
)
func main() {
net := varis.CreatePerceptron(2, 3, 1)
dataset := varis.Dataset{
{varis.Vector{0.0, 0.0}, varis.Vector{1.0}},
{varis.Vector{1.0, 0.0}, varis.Vector{0.0}},
{varis.Vector{0.0, 1.0}, varis.Vector{0.0}},
{varis.Vector{1.0, 1.0}, varis.Vector{1.0}},
}
trainer := varis.PerceptronTrainer{
Network: &net,
Dataset: dataset,
}
trainer.BackPropagation(10000)
varis.PrintCalculation = true
net.Calculate(varis.Vector{0.0, 0.0}) // Output: [0.9816677167418877]
net.Calculate(varis.Vector{1.0, 0.0}) // Output: [0.02076530509106318]
net.Calculate(varis.Vector{0.0, 1.0}) // Output: [0.018253250887023762]
net.Calculate(varis.Vector{1.0, 1.0}) // Output: [0.9847884089930481]
}
```

## Roadmap 0.2-0.5

- Add locks
- Add training channels
- Improve speed
- Add error return to functions.
- Create more tests and benchmarks.
- Create server and cli realization for use Varis as a application