NumPy es una librería muy popular para el procesamiento de grandes matrices y matrices multidimensionales, con la ayuda de una gran colección de funciones matemáticas de alto nivel. Es muy útil para los cálculos científicos fundamentales en machine learning. Es particularmente útil para el álgebra lineal, la transformación de Fourier y las capacidades de números aleatorios. Otras librerías de alto nivel como TensorFlow utilizan NumPy internamente para la manipulación de tensores.

SciPy es una biblioteca muy popular entre los ingenieros de machine learning, ya que contiene diferentes módulos para la optimización, el álgebra lineal, la integración y la estadística. Hay una diferencia entre la biblioteca de SciPy y la pila de SciPy (SciPy stack). La librería SciPy es uno de los paquetes centrales que componen la pila de SciPy. SciPy también es muy útil para la manipulación de imágenes.

En el siguiente ejemplo podemos ver cómo manipular una imagen utilizando diferentes librerías con SciPy. Podemos elegir una imagen cualquiera en JPEG en nuestro ordenador y ver el resultado de las operaciones descritas.

Skikit-learn es una de las librerías de machine learning más populares para los algoritmos de machine learning clásico. Está construida sobre dos bibliotecas básicas de Python, NumPy y SciPy. Scikit-learn soporta la mayoría de los algoritmos de aprendizaje supervisado y no supervisado. Scikit-learn también puede ser usado para la minería de datos y el análisis de datos, lo que lo convierte en una gran herramienta para los que empiezan con el machine learning.

En el siguiente ejemplo se importa uno de los dataset más conocidos en el aprendizaje de machine learning (el dataset «iris», con dimensiones de pétalos y sépalos de flores) y se utiliza un clasificador de árbol de decisión (algoritmo CART, que veremos en el Tema 3). Este es un buen ejemplo, además, de importación tanto de datos como de modelos.

El machine learning es básicamente matemáticas y estadística. Theano es una popular librería que se utiliza para definir, evaluar y optimizar las expresiones matemáticas que implican conjuntos multidimensionales de manera eficiente. Se consigue optimizando la utilización de la CPU y la GPU. Se utiliza ampliamente para pruebas unitarias y autoverificación para detectar y diagnosticar diferentes tipos de errores. Theano es una biblioteca muy potente que se ha utilizado en proyectos científicos de gran escala e intensivos en computación durante mucho tiempo, pero es lo suficientemente sencilla y accesible para que pequeños desarrolladores la utilicen en sus propios proyectos.

Keras es una de las librerías de Machine Learning más populares para Python. Es una API de redes neuronales de alto nivel capaz de funcionar sobre TensorFlow, CNTK, o Theano. Puede funcionar sin problemas en la CPU y la GPU. Keras permite que sea realmente sencillo construir y diseñar redes neuronales para los principiantes en el machine learning. Una de las mejores características de Keras es que permite la creación de prototipos de forma fácil y rápida.

TensorFlow es una biblioteca de código abierto muy popular para el cálculo numérico de alto rendimiento, desarrollada por el equipo de Google Brain en Google. Como su nombre lo sugiere, TensorFlow es un marco de trabajo que implica la definición y ejecución de cálculos que implican tensores.

Un tensor es cierta clase de entidad algebraica que generaliza los conceptos de escalar, vector y matriz de una forma que sea independiente de cualquier sistema de coordenadas elegido.

TensorFlow puede entrenar y ejecutar redes neuronales profundas que pueden ser usadas para desarrollar varias aplicaciones de IA. TensorFlow es ampliamente utilizado en el campo de la investigación y aplicación del machine learning.

Veremos más ejemplos de su uso en el Tema 5 de redes neuronales artificiales y en el Tema 6 de deep learning.

TensorFlow fue lanzado en 2015 como una herramienta de código abierto por Google. Inicialmente estaba disponible en Python. Posteriormente se lanzó TensorFlow.js para su uso mediante JavaScript, bien sea en el mismo navegador o bien del lado del servidor mediante Node.js o incluso en una Raspberry Pi. Más tarde se lanzó TensorFlow 2.0, disponible para C++, Haswell, Java, Go y Rust. También hay bibliotecas de terceros para C#, R y Scala.

Existen versiones de TensorFlow para Windows, Linux y Mac. Además, TensorFlow Lite es la versión de TensorFlow para su uso en terminales móviles o en dispositivos en el borde la red (Edge Computing), incluyendo escenarios Internet of Things.

Más aún, Google lanzó en 2016 su unidad de procesamiento tensorial (TPU), un circuito ASIC (Circuito Integrado de Aplicación Específicas) personalizada específicamente para machine learning y adaptada para TensorFlow. El TPU es un acelerador de IA programable diseñado para proporcionar alto throughput de aritmética de precisión baja (p. ej., 8 bits) y orientado para utilizar o correr modelos más que para entrenarlos. Este tipo de unidades tienen un rendimiento de machine learning por vatio consumido de un orden mayor de magnitud que los sistemas tradicionales. Google Cloud ofrece el uso de TPU en la nube que pueden ser empleados por el público general.

Asimismo, Google lanzó los Edge TPU, dispositivos que incluyen una CPU, una GPU y una TPU para aplicar TensorFlow en el Edge. Se pueden considerar una especie de Raspberry Pi con TPU incluida para ejecutar machine learning en el extremo de la red.