Sulla base PyBrain's tutorials sono riuscito a mettere insieme il seguente codice:Come creare una semplice rete neurale a 3 strati e insegnarla usando l'apprendimento supervisionato?
#!/usr/bin/env python2
# coding: utf-8
from pybrain.structure import FeedForwardNetwork, LinearLayer, SigmoidLayer, FullConnection
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
n = FeedForwardNetwork()
inLayer = LinearLayer(2)
hiddenLayer = SigmoidLayer(3)
outLayer = LinearLayer(1)
n.addInputModule(inLayer)
n.addModule(hiddenLayer)
n.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
n.addConnection(in_to_hidden)
n.addConnection(hidden_to_out)
n.sortModules()
ds = SupervisedDataSet(2, 1)
ds.addSample((0, 0), (0,))
ds.addSample((0, 1), (1,))
ds.addSample((1, 0), (1,))
ds.addSample((1, 1), (0,))
trainer = BackpropTrainer(n, ds)
# trainer.train()
trainer.trainUntilConvergence()
print n.activate([0, 0])[0]
print n.activate([0, 1])[0]
print n.activate([1, 0])[0]
print n.activate([1, 1])[0]
Dovrebbe imparare funzione XOR, ma i risultati sembrano abbastanza casuale:
0,208884929522
0,168926515771
0.459452834043
0,424209192223
o
0,84956138664
0,888512762786
0,564964077401
0,611111147862
Esiste un metodo per addestrare la rete finché l'errore medio non è inferiore (o uguale) del necessario o è stato raggiunto il limite per il numero di epoche? – Luke
La documentazione di @Luke PyBrain afferma onestamente che "questa documentazione comprende solo un estratto soggettivo dei metodi disponibili". Quindi avrai bisogno di esaminare l'implementazione della tua particolare distribuzione PyBrain. Ma anche se non c'è, è molto facile implementare tale ciclo da solo. – BartoszKP