# backy

Backy is a neural network which is using the backpropagation algorithm. (Written in Googles Dart). Please report all errors you can find to me.

# How to

The Neuron The neuron defines how the output is computed and in what range...

# The Neural Network:

It can be instanciated with any number of layer dimensions. For example: `2, 3, 1`

which produces a net with 3 layers. The input layer has two inputs and the
output layer has 1 output neuron. The hidden layer has 3 neurons.

# Train the network

Use the "train"-method to tell the net what you expect from a certain input.
net.train(,

e.g. train an XOR network:

```
net.train([-1, -1], [ 1]);
net.train([-1, 1], [-1]);
net.train([ 1, -1], [-1]);
net.train([ 1, 1], [ 1]);
```

# Use the Network

Once the network is trained, you can use it and it will return the output:

```
<expected> = net.use(<input>);
print(net.use([-1, 1])); // prints probably: [-.9988, .9988]
```

# A working example:

The network needs usually many trainingsteps in orderto find the right weights and therefore the solution. Use the trainer in order to train backy more comfortably.

- Imagine the trainer as a personal trainer for a student.
- You tell the trainer what he should train the student.
- And he will repeat the training until the student produces the expected answers, or until a maximum of trainingrounds has been exceeded.

```
// 1.
var neuron = new TanHNeuron(); // returnes floatingpoint values between -1 and 1
var student = new Backy([2, 2, 1], neuron);
var trainer = new Trainer(backy: student, maximumReapeatingCycle: 200, precision: .1);
// 2. Add the pattern whcih the network should learn
trainer.addTrainingCase([-1,-1], [-1]);
trainer.addTrainingCase([-1, 1], [-1]);
trainer.addTrainingCase([ 1,-1], [-1]);
trainer.addTrainingCase([ 1, 1], [ 1]);
// 3. train all the traininCases up to 300 times and be satisfied with a precision of .1
print(trainer.trainOnlineSets()); // prints number loops it took to learn all trainingcases
// 4. After that you can use the neural network
print(student.use([-1,-1]));
print(student.use([-1, 1]));
print(student.use([ 1,-1]));
print(student.use([ 1, 1]));
```