Ho bisogno di addestrare la rete e quindi alimentarla con i dati di test uno per uno. C'è qualche esempio o documento incluso?come si alimenta pybrain ffn con una voce (alla rete già formata)?
Per raggiungere il risultato, ho serializzato la rete addestrata e la utilizzo con ogni nuova voce in entrata. Il problema è che ho avuto un crash da _convertToOneOfMany
e anche se ne capisco lo scopo (da here) Non capisco come funzioni esattamente.
Il suo comportamento non è deterministico per me. Deve interpretare in qualche modo classi ed etichette e ci deve essere qualche requisito che mi manca. Funziona per l'intero set di dati, tuttavia se prendo la linea solo casuale impazzisce.
Traceback (most recent call last):
File "ffn_iris.py", line 29, in <module>
tstdata._convertToOneOfMany()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PyBrain-0.3-py2.6.egg/pybrain/datasets/classification.py", line 142, in _convertToOneOfMany
newtarg[i, int(oldtarg[i])] = bounds[1]
IndexError: index (2) out of range (0<=index<1) in dimension 1
EDIT: Per essere più precisi lasciate che vi dica quello che sto facendo: voglio allenare rete per l'esempio più famoso NN in Internet;) - Iris Dataset.
E 'qualcosa di simile:
5.1,3.5,1.4,0.2,0
4.9,3.0,1.4,0.2,0
4.7,3.2,1.3,0.2,0
4.6,3.1,1.5,0.2,0
etc...
L'ultimo a zero è la classe. L'intero set di dati contiene 60 righe. 20 per 0, 20 per 1 e 20 per 2.
ho letto il file con i dati e costruire set di dati:
alldata = ClassificationDataSet(4, class_labels=['Iris-setosa',
'Iris-versicolor',
'Iris-virginica'])
--- loop here ---
alldata.addSample(line[0:4], line[4])
--- create testing and training sets ---
tstdata, trndata = alldata.splitWithProportion(0.7)
--- converted matrixes ---
trndata._convertToOneOfMany()
tstdata._convertToOneOfMany()
--- not important, just for completeness ----
fnn = buildNetwork(trndata.indim, 10, trndata.outdim, outclass=SoftmaxLayer)
trainer = BackpropTrainer(fnn, dataset=trndata,
momentum=0.01, verbose=True,
weightdecay=0.01)
Il mio problema si riferisce a _convertToOneOfMany()
. Quando il set di dati o il file di dati contiene solo coppie di voci (non 60, suddivise in tre classi) si blocca con eccezione dall'inizio della domanda.
Esempio di Set di dati crash:
6.5,3.0,5.2,2.0,1
6.5,3.0,5.2,2.0,1
6.2,3.4,5.4,2.3,2
6.5,3.0,5.2,2.0,0
Esempio di lavorare uno:
6.5,3.0,5.2,2.0,1
6.2,3.4,5.4,2.3,2
6.5,3.0,5.2,2.0,0
Come può convertToOneOfMany()
essere collegato al numero di voci nel set di dati o la dimensione di un sottoinsieme di classe? Anche le voci di una riga si bloccano.
Ho ampliato la domanda - potresti dare un'occhiata? Grazie! C'è qualche forum o mailing list per utenti esperti di PyBrain? – user425720