Keras es una de las principales API de redes neuronales de Deep Learning. Descubre todo lo que hay que saber sobre Keras en este artículo.
Las redes neuronales de Deep Learning cada vez se utilizan más. Sin embargo, los principales frameworks suelen ser complejos e impiden a muchos desarrolladores adentrarse en el aprendizaje profundo y la inteligencia artificial.
Para solucionar este problema, se han creado varias API de alto nivel simplificadas. Facilitan la creación de modelos de redes neuronales. Entre estas API, la más popular es probablemente Keras.
¿Qué es Keras?
Keras es una API de redes neuronales escrita en lenguaje Python. Se trata de una biblioteca de código abierto que se ejecuta sobre frameworks como Theano y TensorFlow.
Diseñada para ser modular, rápida y fácil de usar, Keras fue creada por el ingeniero de Google, François Chollet. Ofrece una forma sencilla e intuitiva de crear modelos de Deep Learning.
En la actualidad, Keras es una de las API de redes neuronales más utilizadas para el desarrollo y las pruebas de redes neuronales. Facilita enormemente la creación de capas para las redes neuronales o la configuración de arquitecturas complejas.
Un Modelo Keras consiste en una secuencia o un gráfico independiente. Hay varios módulos totalmente configurables que pueden combinarse para crear nuevos modelos.
Una de las ventajas de esta modularidad es que resulta muy fácil añadir nuevas funcionalidades como módulos independientes. Keras es, por tanto, muy flexible y adecuada para la investigación y la innovación.
Características de Keras
Keras está diseñada para ser intuitiva, modular, fácil de ampliar y para trabajar con Python. Según sus creadores, esta API está «diseñada para humanos, no para máquinas» y «sigue las mejores prácticas para reducir la carga cognitiva».
Es posible combinar módulos de capas neuronales, optimizadores, esquemas de inicialización, funciones de activación o esquemas de regularización para crear nuevos módulos.
Es muy fácil añadir nuevos módulos, así como nuevas clases y funciones. Las plantillas se definen en el código Python, no en archivos de configuración de modelos independientes.
¿Por qué utilizar Keras?
La popularidad de Keras está ligada a sus ventajas. Esta API es fácil de usar y de aprender a utilizarla.
Su popularidad en sí misma es una ventaja, ya que es compatible con muchas opciones de despliegue en producción. Admite al menos cinco motores back-end: TensorFlow, CNTK, Theano, MXNet y PlaidML.
También es compatible con el uso de varias GPU y el entrenamiento distribuido. Además, la biblioteca cuenta con el apoyo de Google, Microsoft, Amazon, Apple, Nvidia o incluso Uber.
Back-ends
Keras no se encarga directamente de operaciones de bajo nivel como productos o convoluciones de Tensor. Para este tipo de cálculo, se basa en un motor backend.
Varios de estos motores son compatibles, pero el más utilizado es TensorFlow de Google. La API Keras se integra en un paquete con TensorFlow con el formato tf.keras. Desde la versión 2.0, es la API principal de TensorFlow.
Modelos Keras
El modelo es el centro de la estructura de datos de Keras. Existen dos tipos principales: el modelo secuencial y la clase Model utilizada con la API funcional.
El modelo secuencial (Sequential) es una pila lineal de capas. Las capas pueden describirse de forma muy sencilla. Cada definición de capa requiere una línea de código.
La compilación (la definición del proceso de aprendizaje) también requiere una línea de código. El ajuste (entrenamiento), la evaluación (cálculo de pérdidas y métricas) y la predicción de resultados a partir del modelo entrenado también requieren una línea de código cada uno.
El modelo secuencial de Keras es sencillo, pero limitado en cuanto a la topología del modelo. Por lo tanto, la API funcional de Keras es útil para crear modelos complejos, como modelos de múltiples entradas y múltiples salidas, grafos acíclicos dirigidos (DAG) y modelos de capas compartidas.
Esta API funcional utiliza las mismas capas que el modelo Secuencial, pero ofrece más flexibilidad a la hora de combinarlas. Primero se definen las capas, luego se crea el modelo, se compila y se entrena. La evaluación y la predicción funcionan del mismo modo que en el modelo Secuencial.
Capas de Keras
Keras ofrece una amplia variedad de tipos de capas predefinidas. Entre las principales están Dense, Activation, Dropout, Lambda.
Las distintas capas de convolución van de 1D a 3D e incluyen las variantes más comunes para cada dimensionalidad. La convolución 2D, inspirada en el funcionamiento del córtex visual, se utiliza habitualmente para el reconocimiento de imágenes.
Las capas de Pooling también van de la 1D a la 3D e incluyen variantes comunes como el pooling máximo y el pooling medio. Las capas conectadas localmente actúan como capas de convolución, pero sus pesos no se comparten.
Entre las capas recurrentes se encuentra la capa simple, gated LSTM. Son muy útiles para diversas aplicaciones, incluido el procesamiento del lenguaje. Por último, las capas de ruido evitan el sobreajuste.
Datasets de Keras
Keras recopila siete de los conjuntos de datos de muestra más comunes en Deep Learning a través de la clase keras.datasets.
Entre ellos se incluyen cifar10 y cifar100 para pequeñas imágenes en color, reseñas de películas de IMDB, temas de noticias de Reuters, cifras manuscritas de MNIST, imágenes de moda de MNIST y precios inmobiliarios de Boston.
Aplicaciones y ejemplos de Keras
Keras también incluye diez modelos muy conocidos: Keras Applications, preentrenados en ImageNet. Estos diez modelos son Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet y MobileNetV2TK.
Pueden utilizarse para predecir la clasificación de imágenes, extraer características y configurar modelos sobre un conjunto de clases diferentes. En total, el repositorio de ejemplo de Keras contiene más de 40 modelos de muestra, como modelos de vídeo, texto y secuencias, o generativos.
Los modelos Keras pueden desplegarse en una amplia variedad de plataformas. Esto supone una ventaja con respecto a otros frameworks de Deep Learning.
Estas plataformas incluyen iOS a través de CoreML, Android a través de TensorFlow Android runtime, navegadores web a través de Keras.js y WebDNN, Google Cloud a través de TensorFlow-Serving, en un backend de webapp Python, en JVM a través de la importación de modelo DL4J y en Raspberry Pi.
¿Cómo aprender a utilizar Keras?
Para empezar a usar Keras, primero puedes leer la documentación oficial, explorar el repositorio de código en GitHub, instalar Keras y un motor backend como TensorFlow.
Además, puedes probar el tutorial oficial para el modelo Secuencial y explorar los distintos ejemplos. Este es un primer paso para empezar a conocer esta API de Deep Learning.
Sin embargo, la mejor manera de dominar Keras es a través de los cursos de DataScientest. Esta biblioteca es la base del módulo de Deep Learning de nuestro curso de Data Scientist, junto con Tensorflow, CNN-RNN y GANs.
A través de esta formación, también aprenderás programación en Python, DataViz, Machine Learning, bases de datos y sistemas de IA. Al finalizar el programa, estarás preparado para trabajar como Data Scientist.
Nuestros cursos están diseñados por profesionales para satisfacer las necesidades reales del sector. Como resultado, el 93 % de nuestros antiguos alumnos han encontrado trabajo inmediatamente después del curso. Los alumnos también reciben un título certificado por la Universidad de La Sorbona.
Todos nuestros cursos adoptan un enfoque de Blended Learning que combina el aprendizaje a distancia y presencial. Pueden cursarse en BootCamp o en Formación Continua. ¡No esperes más y descubre el curso de Data Scientist!
Ahora ya sabes todo lo que hay que saber sobre Keras. Descubre nuestro completo dosier sobre Deep Learning.