/deep-g-prop

DeepGProp: Optimización de Redes Neuronales con Algoritmos Genéticos

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Trabajo de Fin de Grado: DeepGProp

Optimización de Redes Neuronales con Algoritmos Genéticos

DOI test_lint-badge test_src-badge test_docs-badge license-badge tag-badge

  • Autor(a): Luis Liñán Villafranca
  • Tutor(a)(es): Juan Julián Merelo Guervós

Índice


Instalación

Como primer requisito, se debe de tener Python 3.7 y pip instalados en el sistema. Es muy recomendable crear un entorno virtual para aislar correctamente las versiones de los paquetes que se vayan a utilizar. Para más información sobre pip y venv consultar el tutorial oficial.

Creación de un entorno virtual

Para crear un entorno virtual, podemos usar el módulo que viene incorporado con la instalación de Python desde la versión 3.3:

python3.7 -m venv .venv

Así habríamos creado un entorno virtual en el directorio .venv. Una vez instalado el entorno virtual, deberemos activarlo. Para ello hay que ejecutar uno de los siguientes comandos dependiendo del interprete de órdenes que se use (tabla obtenida de la documentación oficial de venv):

Platform Shell Command to activate virtual environment
POSIX bash/zsh $ source <venv>/bin/activate
fish $ . <venv>/bin/activate.fish
csh/tcsh $ source <venv>/bin/activate.csh
PowerShell Core $ <venv>/bin/Activate.ps1
Windows cmd.exe C:\> <venv>\Scripts\activate.bat
PowerShell PS C:\> <venv>\Scripts\Activate.ps1

Tabla 1.1: Activación de entorno virtual.

Instalación de la interfáz de línea de comandos

Para ejecutar DeepGProp, primero hay que instalar su interfáz de línea de comandos. Para ello, tras crear el entorno virtual, ejecutaremos:

pip install .

Si se quiere instalar en modo edición (para que los cambios realizados en el código tengan efecto en la interfáz) será necesario añadir el indicador -e:

pip install -e .

Tras la instalación tendremos disponible el comando dgp. Puedes ejecutar lo siguiente para obtener las opciones existentes:

dgp --help

Instalación de módulos extras

He dividido los paquetes utilizados en el proyecto en distintos grupos para evitar instalar librerías no deseadas si vamos a realizar tareas concretas (como construir la documentación o ejecutar cierto módulo):

Propósito Ruta del archivo Descripción
Producción requirements/prod.txt Paquetes necesarios para ejecutar código asociado directamente a DeepGProp. El apartado anterior realiza esta acción.
Documentación requirements/docs.txt Paquetes necesarios para construir la documentación. Si se usa Nox, no será necesario instalar estos paquetes a mano.
Test requirements/tests.txt Paquetes para ejecutar los tests. Si se usa Nox, no será necesario instalar estos paquetes a mano.
Comparativa de Optimizadores requirements/hp_optimization.txt Paquetes usados en la comparativa de optimizadores de hiper-parámetros.
Comparativa de Frameworks para MLP requirements/mlp_frameworks.txt Paquetes usados en la comparativa de frameworks para redes neuronales.

Para instalar cualquiera de los grupos de paquetes hay que ejecutar:

pip install -r <nombre archivo>

pudiendo sustituirse <nombre archivo> cualquiera de los anteriores. Si se quisiera instalar los paquetes sin usar un entorno virtual (no recomendado) se puede ejecutar el siguiente comando:

python3.7 -m pip install --user -r <nombre archivo>

Es el mismo comando pero precedido por python3.7 -m para evitar problemas si tenemos otras versiones de Python instaladas en el sistema.

Ejecución de test y otras utilidades

Nota: Si se ha optado por usar un entorno virtual, debe ser activado usando uno de los comandos mostrados en la tabla de la sección de instalación antes de ejecutar cualquiera de los siguientes comandos.

Primero instalamos la herramienta Nox:

pip install -U nox

Para ejecutar los test:

nox -k test

Para pasar los distintos linters al código:

nox -k lint

Para mostrar todas las opciones disponibles:

nox -l

Documentación

Para poder construir en su máquina la documentación o ejecutar los tests de ésta, será necesario instalar la lista de paquetes siguiente:

  • aspell
  • aspell-en
  • aspell-es
  • pandoc
  • qpdf
  • texlive-base
  • texlive-latex-recommended
  • texlive-fonts-recommended
  • texlive-fonts-extra
  • texlive-lang-spanish
  • texlive-formats-extra
  • texlive-science

Para instalarlo en Ubuntu sería:

sudo apt install -y aspell aspell-es pandoc qpdf texlive-base \
                    texlive-latex-recommended texlive-fonts-recommended \
                    texlive-fonts-extra texlive-lang-spanish \
                    texlive-formats-extra

Una vez instalados, Nox terminara de obtener todo lo necesario y construirá la documentación con el siguiente comando:

nox -e build-pdf

Presentación

La presentación está hecha en Markdown, con la herramienta Marp. Para poder obtener una visualización de la presentación es necesario instalar la interfaz de línea de comandos que este proyecto provee:

npm install @marp-team/marp-cli

Tras la instalación, es necesario ejecutar:

npx marp --preview docs/presentation/presentation.md

Para obtener la presentación en formato PDF, se pueden seguir las instrucciones oficiales.

Desarrollo

En este proyecto se usa un metodología de desarrollo basada en test.

Se utilizará también un fichero de cambios basado en Keep a Changelog. Esta información se guardará en el archivo CHANGELOG.md.

Frameworks

  • Keras - librería para la creación y ejecución de redes neuronales.

  • DEAP - librería de construcción de algoritmos evolutivos. Se utilizará ésta para optimizar los parámetros de las redes neuronales.

En el capítulo 3 "El estado del arte" se podrá encontrar una comparativa detallada con otras bibliotecas similares y el por qué de la elección de éstas.

Utilidades

  • Automatización:

    • Nox - herramienta de automatización para ejecutar procesos como la construcción de la documentación o el lanzamiento de tests.
  • Tests:

    • pytest - librería de Python para la ejecución de test que se usarán en la integración continua.

    • pandoc y aspell - utilidades para convertir la documentación del trabajo a texto plano y comprobar si hay errores ortográficos.

  • Documentación:

    • Pweave - módulo de Python que permite mostrar salida de código directamente en LaTeX.

    • TexLive - generador de archivos PDFs a partir de Latex.

Licencia

El código de este repositorio está liberado bajo la licencia GPLv3. Para más información vea el archivo LICENSE.