Implementación de una red neuronal

Para la implementación de un perceptrón multicapa para escenarios de clasificación vamos a basarnos en el código de Michael Nielsen incluido en su libro online Neural Networks and Deep Learning aunque con algunos cambios.

Nuestros requisitos son:

  • Queremos poder especificar la estructura del perceptrón multicapa (número de capas y número de neuronas artificiales por capa)
  • Queremos poder entrenar la red neuronal a partir de sendas estructuras Pandas, X e y, siendo "X" un DataFrame Pandas con las características predictivas e "y" una Serie Pandas con la variable objetivo. Podríamos escribir el código de forma que aceptase también arrays NumPy, pero, para simplificarlo, lo dejaremos en estructuras pandas.
  • También para simplificar el desarrollo supondremos que la única función de activación disponible es la función sigmoide y que se trata de un clasificador (vamos a aplicarlo al dataset MNIST).
  • En la medida de lo posible, queremos implementar algunas de las herramientas ofrecidas en la implementación de Scikit-Learn (poder especificar la tase de aprendizaje, el número de epochs, el tamaño del batch, si los datos deberán ser desordenados o no antes del entrenamiento de la red, etc.)