Tras acabar el curso de Machine Learning, estuve mirando por donde continuar. Los entornos de desarrollo usados en el curso para protopipar en Octave/Matlab no son lo que usa la gente, así que hay que dar el salto a algo de más calidad. Entre los candidatos que más me han recomendado está Keras, usando a TensorFlow de backend. No voy a entrar en si Keras es mejor que otras herramientas u otros frameworks o si elegir TensorFlow o Theano. Tan solo voy a explicar como se puede instalar en Ubuntu.
Primero probé a instalarlo a partir de la documentación de las paǵinas oficiales, y me resultó imposible, siempre me aparecía algún error, alguna duda no resuelta. Al final me fui a buscar tutoriales específicos de cómo instlar keras en Ubuntu y aún así me he pasado dos días echándole bastante tiempo por la noche. Al final lo he conseguido y te dejo cómo lo he hecho por si puede allanarte el camino.
Como vamos a seguir los pasos que recomiendan las webs que os dejo de fuentes al final del tutorial, vamos a instalar PIP que yo no lo tenía, para administrar los paquetes. pip en linux es eso, un sistema de gestión de paquetes escrito en python.
sudo apt-get install python3-pip sudo apt install python-pip
Instalar virtualenv usando pip3
Con Virtualenv podremos crear entornos virtuales con Python. Podríamos decir que un entorno virtual consiste en encapsular un proyecto donde podremos trabajar con diferentes paquetes y en diferentes versiones.
Aquí han aparecido los primeros problemas al usar sudo por el tutorial que estaba siguiendo (sudo pip3 install virtualenv) me devolvía el siguiente error
Algunos proponían borrar la carpeta http de caché pero eso no ha funcionado. Otra solución ue no he progado e usar -H, es decir, sudo -H pip3 install virtualenv. Pero la solución más sencilla que ha funcionado en mi caso ha sido
pip3 install virtualenv
pip3 en lugar de pip quiere decir que vamos a usar python 3
Y vamos a instalar Virtualenvwrapper
Virtualenvwrapper nos vitamina, automatiza muchas tareas y configuraciones de Virtualenv. Nos ayuda a que todo sea más fácil. Por eso lo utilizamos.
Siguiendo los pasos que proponían varios tutoriales parecía que todo estaba instalado pero cuando ejecutaba el mkvirtualenva que es uno de los pasos de más abajo, siempre me decía que no reconocía esta instrucción. Al final he podido instalarlo y hacer funcionar virtuanenvwrapper así.
pip install virtualenvwrapper
Una vez veamos Editar .bashrc con y meteremos nuestra source, es decir la dirección donde tenemos el archivo virtualenvwrapper.sh
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel source /home/nmorato/.local/bin/virtualenvwrapper.sh
Estas pequeñas cosas son las qeu sé que a la gente que empieza se le atraganta porque no saben como personalizar esa línea y encontrar la ruta de su archivo. Así que va una mini-explicación en 4 imágenes
Cómo buscar y ver la source o ruta de un archivo
- Abre Nautilus, el gestor de archivos de Ubuntu y pincha en otras ubicaciones. Te mostrará tu disco duro elige el que tengas instalado Ubuntu.
- Aquí estamos en la raíz de nuestro sistema. Pincha en la lupita que hay arriba y se te desplegará el buscador.
- Mete el nombre del archivo, en este caso virtualenvwrapper.sh y te encontrará los que hay en todo el sistema
- Te pones encima, clickas con el botón derecho y le das a propiedades. Ahí verás su ruta completa. La que tienes que coger para modificar el .bashrc
Pues ya está. Una vez modificado .bashrc ejecuta en consola esa línea, en mi caso
source /home/nmorato/.local/bin/virtualenvwrapper.sh
Tras un error en la comprobación del tutorial
ERROR: virtualenvwrapper could not find virtualenv in your path
en este paso he tenido que instalar también pip con
sudo apt install virtualenv
Otra opción es
sudo apt install --reinstall virtualenv
Creamos entorno keras en virtualenv y virtualenvwrapper
En mi caso le he llamado keras_tf de TensorFlow que es el backend que vamos a usar con Keras y creo el entorno de desarrollo.
mkvirtualenv keras_tf-p
Es muy sencillo. Con eso ya está instalado. A partíu de ahora cada vez que queramos entrar meteremos
workon keras_tf
Instalar Tensor Flow
Instrucción muy sencilla. La verdad es que aquí he ido a lo sencillo. Si miras documentación oficial hay muchísimas opciones.
pip install --upgrade tensorflow
Para comprobar que todo va bien ejecutamos en consola
python >>> import tensorflow >>>
Instalar keras
Para poder instalar Keras, primero hay que instalar estas dependencias de python. También es posible aprovechar e instalar OpenCV ahora, pero como no pienso usarlo de momento no he querido complicarlo más.
pip install numpy scipy pip install scikit-learn pip install pillow pip install h5py
Y finalmente después de todo lo anterior por fin se puede instalar Keras :)
pip install keras
Comprobamos el archivo keras.json de ~/.keras/keras.json puedes darle a Buscar en nautilus, el gestor de archivos de Ubuntu
Los valores por defecto tiene que ser similares a esto
{ "floatx": "float32", "epsilon": 1e-07, "backend": "tensorflow", "image_data_format": "channels_last" }
Comprueba sobre todo que backend es tensorflow y no theano y que image_data_format pone channel_last y NO channels_first de theano
Si no encuentras keras.json
workon keras_tf python import keras quit()
Vuelve a buscar y magia!!! Ahora ya aparece.
Si todo va bien. Ya lo tendrías todo listo, ya puedes empezar a utilizar Keras y a disfrutar del Machine Learning, del deep learning, inteligencia artificial,…
Yo he tenido un problema adicional que me va a limitar el uso de TensorFlow. Fíjate en la imagen y verás que la última línea es Instrucción ilegal (‘core’ generado) en inglés es el core dumped.
Problema con TensorFlow y las instrucciones AVX. TensorFlow dumped
Parece ser que que las versiones binarias precompiladas de versiones mayores a 1.5 de TensorFlow usan instrucciones AVX que no soportan las CPUs antiguas. Tras buscar y rebuscar, la única solución la encontré en stackoverflow, donde decían que teníamos que quedarnos en la versión 1.5
Así que he tenido que hacer downgrade de TensorFlow a 1.5 Si tienes el mismo problema esto se hace con
pip install tensorflow==1.5
¿Y ahora qué?
Bueno, lo primero es probar Keras, cómo funciona, si me acoplo o no. Si solo voy a hacer pruebas o si voy a usarlo e verdad en la resolución de problemas. La verdad es que Keras es totalmente diferente al uso que hice de Octave / Matlab en el curso de Machine Learning. Con Keras, es que aparece que los algoritmos ni los ves, los tienes ya implantados y te dedicas a meterle capas. Si sigo adelante con el aprendizaje de Machine Learning, y necesito una herramienta más potente quizás opte por servicios en la nube donde se preconfigura Keras como AWS, Azure, google cloud, etc.
Pero esto lo dejo para más adelante. Voy paso a paso.
- Installing Keras with TensorFlow backend
- Installing Keras for deep learning
- Keras and TensorFlow installation
- Documentación oficial Keras
- Documentación oficial TensorFlow
- Documentación oficial Virtualenv
- Documentación oficial Virtualenvwrapper