.. training:

Training your Network on your Dataset
=====================================

For adjusting parameters of modules in supervised learning, PyBrain has the 
concept of trainers. Trainers take a module and a dataset in order to train the
module to fit the data in the dataset.

A classic example for training is backpropagation. PyBrain comes with 
backpropagation, of course, and we will use the ``BackpropTrainer`` here::

   >>> from pybrain.supervised.trainers import BackpropTrainer
   
We have already build a dataset for XOR and we have also learned to build 
networks that can handle such problems. Let's just connect the two with a 
trainer::

   >>> net = buildNetwork(2, 3, 1, bias=True, hiddenclass=TanhLayer)
   >>> trainer = BackpropTrainer(net, ds)
   
The trainer now knows about the network and the dataset and we can train the net
on the data::

   >>> trainer.train()
   0.31516384514375834

This call trains the net for one full epoch and returns a double proportional to
the error. If we want to train the network until convergence, there is another
method::

   >>> trainer.trainUntilConvergence()
   ...
   
This returns a whole bunch of data, which is nothing but a tuple containing the
errors for every training epoch. 