# Graph-tool Neural Networks

**Graph-tool** is a great open source tool for creating, using and analyzing graphs. It's a python
library with C++ bindings, uses boost::graph under the hood and seems to be pretty fast
(http://graph-tool.skewed.de/).

**Graph-tool Neural Networks** is an implementation of ANN *on top of graph-tool*. It makes
researching neural networks nice&easy. You can create custom nets, train them in many ways, analyze and plot them.

# Documentation

Full documentation is available here: http://janekolszak.github.io/graph-tool-nn

# Installation

Install dependencies:

- graph-tool
- numpy

and then run:

`pip install graph-tool-nn`

# Example

XOR function implementation - multilayer perceptron trained with momentum:

```
from numpy.testing import assert_allclose
import numpy as np
from gtnn.generators.mlp import mlp
from gtnn.learn.momentum import train
from gtnn.network.activation import LogSigmoid
inp = [[0, 0], [1, 0], [0, 1], [1, 1]]
out = [[0], [1], [1], [0]]
n = mlp(sizes=[2, 2, 1],
weightGenerator=np.random.random,
biasGenerator=np.random.random,
activationFunction=LogSigmoid(0, 1))
# miniBatchTrain, batchTrain also available
train(net=n,
inputs=inp,
outputs=out,
numEpochs=1000,
learningRate=0.3,
momentum=0.8)
assert_allclose([n.forward(i) for i in inp], out, atol=0.1)
```