TensorFlow con Python3
TensorFlow es una librería Open Source que Google ha liberado a principios de este mes. Permite de forma sencilla montar flujos de procesado y entrenamiento con elementos como redes neuronales, e incluso implementar nuevas operaciones sobre su arquitectura (tutorial y ejemplos).
Esta librería está escrita en C++, pero la arquitectura, los datos a tratar y las operaciones se declaran en Python.
Esto está genial, ya que da un gran rendimiento sin tener que pelearse con Segmentation Faults
, pero si pensabas
utilizar Python3 para esto... quizá tengas que esperar un poco, resulta que aún no está soportado
[issue #1 en el GitHub], aunque tienen intención de hacerlo en algún momento.
Mientras tanto, en este repo, en la rama python3 tenéis una forma de poder ir usándolo... no está totalmente actualizado y quedan cosas sin afinar, por ejemplo los checkpoints. Además hay que compilarlo a mano (no hay un paquete de pip ya preparado), pero ahora veremos que se puede hacer fácilmente.
Bazel
Bien, resulta que para compilar TensorFlow no basta con un make
de toda la
vida, sino que está preparado para hacerse con bazel.
Instalar este es bastante sencillo, las instrucciones están en bazel.io.
Una vez instaladas las dependencias, Bazel tiene un instalador que se puede
ejecutar pipeando un curl
de su script a una shell (ugh...) o clonando el repo,
como pone en la web para esto último solo hace falta hacer
1 2 3 |
|
Esto generará el binario de Bazel en bazel-bin/src/bazel
, que podemos mover
al $PATH que queramos. Además tendremos un archivo para ayudar al autocompletado
en scripts/bazel-complete-template.bash
, que podemos añadir al .bashrc
con una línea como esta
1 |
|
Virtual environment
Una vez tenemos preparado Bazel, tendremos que preparar el entorno virtual donde alojaremos todos los paquetes de los que depende TensorFlow, para esto solo hay que hacer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
TensorFlow
Cuando el entorno ya está completamente listo, solo queda generar el paquete pip, pero ojo con este tema: parece que con GCC-5 el proceso consume demasiada memoria, así que hay que evitar paralelizarlo para que no atasque el PC. Así que si la versión de GCC es inferior a la 5, las órden será
1 2 |
|
Para (en GCC 5), limitar la concurrencia del compilador, haremos
1 2 |
|
Una vez que esto acabó, podemos generar el paquete con
1 |
|
El segundo parámetro especifica donde se dejará el paquete compilado (/tmp/tensorflow_pkg
),
podemos usar el que queramos (también borrarlo una vez esté instalado).
Con todo ya listo y el paquete generado solo queda instalarlo con
1 |
|
Y listo, ya podemos utilizar esta librería
1 2 3 4 5 6 |
|