2012-02-04 8 views
9

Tengo una red neuronal n pybrain, con dos entradas, una capa oculta y una salida layer.I utilice el siguiente tren a:¿Cómo puedo calcular o controlar el entrenamiento de una red neuronal en el cerebro?

trainer = BackpropTrainer(net,ds) 
trainer.trainUntilConvergence() 

neto es la red neuronal y ds es los datos del tren.

Mi pregunta es si y cómo puedo calcular el tiempo necesario para completar la capacitación o cómo puedo controlar el progreso de la capacitación. Gracias.

Respuesta

10

Siempre podría subclase BackpropTrainer (código fuente here) y anular trainUntilConvergence si se utiliza maxEpochs, realizar un seguimiento del porcentaje de integridad utilizando la relación entre las épocas y épocas.

Si no utiliza maxEpochs siempre se puede hacer una conjetura del número de épocas restante según la tasa media de cambio en los validationErrors y el tamaño de continueEpochs. O simplemente examine la tasa de cambio en validationerrors. Si quisieras mapear épocas a tiempo, tendrías que registrar el tiempo de cada época y almacenarlas.

+1

Lo ideal es que se desea utilizar trainEpochs() en lugar de modificar trainUntilConvergence(). Entrene para X número de épocas, verifique resultado, Tren x número de épocas. Repita hasta la convergencia o max épocas. – NothingMore

2

Nada que añadir al comentario anterior, excepto para el código que utilizo para ello:

maxepochs=20 
results=[] 
for i in range(len(maxepochs)): 
    aux = trainer.train() 
    results.extend(aux) 
    plt.figure() 
    plt.scatter(range(len(results[0])),results[0]) 
    plt.draw() 

que se obtendría una nueva trama en cada ciclo. No es muy agradable, pero funciona para mí.

esperanza que te ayudaría a

+0

maxepochs es un int. No tiene propiedad len ¿Quiso decir results.append (aux)? – agcala

Cuestiones relacionadas