python - neural - cómo alimentar a pybrain ffn con una entrada(a la red ya entrenada)?
pybrain python 3 (1)
Puede ser bueno si pega más de su código. Con respecto a su pregunta, está en su documentación: http://pybrain.org/docs/quickstart/network.html Básicamente es este comando: net.activate ([2, 1]) en este caso la red tiene 2 entradas, y él / ella ingresa los valores 2 y 1, te recomiendo que revises su documentación
Necesito entrenar a la red y luego alimentarlo con datos de prueba uno por uno. ¿Hay algún ejemplo o documento que lo incluya?
Para lograr eso, serialicé una red entrenada y la uso con cada nueva entrada entrante. El problema es que obtuve un bloqueo de _convertToOneOfMany
e incluso aunque entiendo su propósito (desde aquí ) no entiendo cómo funciona exactamente.
Su comportamiento no es determinista para mí. Debe interpretar de alguna manera las clases y las etiquetas, y debe haber algún requisito que me falta. Funciona para todo el conjunto de datos, sin embargo, si tomo solo la línea al azar, se vuelve loco.
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
EDITAR: para ser más precisos, déjame decirte lo que estoy haciendo: quiero entrenar a la red para el ejemplo más famoso de NN en Internet;) - Iris Dataset.
Es algo así:
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...
El último cero es la clase. Todo el conjunto de datos contiene 60 filas. 20 para 0, 20 para 1 y 20 para 2.
Leo el archivo con los datos y construyo el conjunto de datos:
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)
Mi problema está relacionado con _convertToOneOfMany()
. Cuando el conjunto de datos o el archivo de datos contiene solo dos entradas (no 60, divididas en tres clases) se bloquea con excepción desde el comienzo de la pregunta.
Ejemplo de datset accidentado:
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
Ejemplo de trabajar 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
¿Cómo se puede convertToOneOfMany()
al número de entradas en el conjunto de datos o al tamaño de un subconjunto de clase? Las entradas de una fila también se bloquean ...