Por un Framework para hacer BPN

Estuve jugando un poco en un framework para hacer BPN (BackPropagation Networks). Todavía sigo en etapa de diseño e implementación, así que llevará su tiempo para que esté completamente operacional.

Que le podríamos pedir a un framework similar? Estuve bosquejando como se vería el aprendizaje y convergencia de la red y salió algo similar:

Configuration cfg = new Configuration(); cfg.SetLearningRate(0.2); cfg.SetMomentRate(0.1); cfg.SetPatternError(0.001); cfg.AddNeuronsAtInput(4); //4 inputs cfg.AddHiddenNeuronsAt(1,5,typeof(SigmoidalNeuron)); // 1srt level: 5 neurons cfg.AddHiddenNeuronsAt<SigmoidalNeuron>(2, 6); // 2nd level: 5 neurons cfg.AddNeuronsAtOutput(5,typeof(SigmoidalNeuron)); //5 Outputs IList<Pattern> patterns = GetPatterns(); cfg.SetPatterns(patterns); Bpn bpn = cfg.BuildNetwork(); while (bpn.Propagate()) { //do something in the middle of the step }

La función Propagate() indicaría un paso en la propagación de todos los patrones; esto correspondería con la propagación hacia adelante de 1 patrón, la propagación hacia atrás de los errores y la corrección de los pesos de la red (el aprendizaje). El bucle continuaría hasta que el error se sea menor que el Epsilon (Error por patrón) que hemos establecido con anterioridad en todos los patrones.

Algunas clases:

Pueden ir mirando el código del proyecto aquí, hay algunas pruebas e implementaciones hechas. Cualquier pregunta, duda o colaboración será bienvenida.

Leave a comment

Please be polite and on topic. Your e-mail will never be published.