TensorFlow

TensorFlow

Tutorial TensorFlow: Introducción a Keras

Descubre Keras, la API que simplifica el diseño de redes neuronales profundas en TensorFlow, con herramientas avanzadas para aprendizaje profundo y producción.

Aprende TensorFlow GRATIS y certifícate

¿Qué es Keras?

Keras es una API de alto nivel diseñada para simplificar la construcción y el entrenamiento de redes neuronales profundas. Originalmente desarrollada como una biblioteca independiente, Keras se ha integrado completamente en TensorFlow para ofrecer una experiencia más cohesiva y eficiente en el desarrollo de modelos de aprendizaje automático.

La principal fortaleza de Keras radica en su enfoque en la usabilidad y la modularidad. Proporciona una interfaz intuitiva que permite a los desarrolladores construir modelos de manera rápida utilizando bloques constructivos llamados capas. Estas capas se pueden combinar de diversas formas para crear arquitecturas de redes neuronales desde las más simples hasta las más complejas.

Por ejemplo, crear un modelo secuencial en Keras es tan sencillo como:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

modelo = Sequential([
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

Este código define un modelo con una capa oculta de 64 neuronas y una capa de salida de 10 neuronas, utilizando funciones de activación ReLU y softmax respectivamente.

Además, Keras soporta diferentes tipos de APIs para la construcción de modelos:

  • API Secuencial: Ideal para modelos lineales y simples.
  • API Funcional: Permite crear modelos con estructuras más complejas como redes con múltiples entradas o salidas.
  • Subclasificación de Modelos: Ofrece máxima flexibilidad al permitir definir modelos personalizados mediante la herencia de clases.

Keras también proporciona una amplia gama de herramientas para el preprocesamiento de datos, selección de funciones de pérdida, optimizadores y métricas. Esto facilita la experimentación y el ajuste fino de los modelos sin necesidad de profundizar en los detalles más técnicos de TensorFlow.

Otra característica destacada es su capacidad para ejecutarse en diferentes entornos de hardware, incluyendo CPU, GPU y TPU, lo que permite escalar los modelos y aprovechar al máximo los recursos disponibles.

En el contexto del aprendizaje profundo, Keras se ha convertido en una opción preferida por desarrolladores e investigadores debido a su sencillez y eficiencia, permitiendo convertir ideas en resultados tangibles de manera más rápida y efectiva.

Componentes de Keras

Keras se compone de varios componentes centrales que facilitan la construcción y el entrenamiento de modelos de aprendizaje profundo. Estos componentes proporcionan una estructura modular que permite a los desarrolladores diseñar y personalizar modelos de forma eficiente. A continuación, se detallan los principales componentes de Keras:

  • Capas (Layers): Son los bloques fundamentales para construir arquitecturas de redes neuronales. Keras ofrece una amplia variedad de capas predefinidas, como Dense (capa densa), Conv2D (capa convolucional bidimensional), LSTM (capa recurrente de memoria a corto y largo plazo) y muchas más. Por ejemplo, para agregar una capa densa de 64 neuronas con activación ReLU:
from tensorflow.keras.layers import Dense

capa_densa = Dense(64, activation='relu')
  • Modelos: Actúan como contenedores que agrupan capas y definen la arquitectura de la red neuronal. Existen tres enfoques principales para construir modelos:
  • API Secuencial: Ideal para modelos lineales y simples donde las capas se apilan secuencialmente.
from tensorflow.keras import Sequential

modelo_secuencial = Sequential([
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])
  • API Funcional: Permite construir modelos más complejos con estructuras no lineales, como redes con múltiples entradas o salidas.
from tensorflow.keras.layers import Input
from tensorflow.keras.models import Model

entrada = Input(shape=(784,))
x = Dense(64, activation='relu')(entrada)
salida = Dense(10, activation='softmax')(x)
modelo_funcional = Model(inputs=entrada, outputs=salida)
  • Subclasificación de Modelos: Ofrece máxima flexibilidad al permitir crear modelos personalizados mediante la herencia de la clase Model.
from tensorflow.keras.models import Model

class MiModelo(Model):
    def __init__(self):
        super(MiModelo, self).__init__()
        self.capa1 = Dense(64, activation='relu')
        self.capa2 = Dense(10, activation='softmax')
    
    def call(self, inputs):
        x = self.capa1(inputs)
        return self.capa2(x)

modelo_subclase = MiModelo()
  • Optimizadores: Son algoritmos que ajustan los pesos del modelo para minimizar la función de pérdida durante el entrenamiento. Keras proporciona optimizadores como SGD (Descenso del Gradiente Estocástico), Adam y RMSprop. Se especifican al compilar el modelo:
from tensorflow.keras.optimizers import Adam

modelo_secuencial.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy')
  • Funciones de pérdida (Loss Functions): Cuantifican la discrepancia entre las predicciones del modelo y los valores reales. Keras incluye funciones de pérdida como categorical_crossentropy (para clasificación multiclase), binary_crossentropy (para clasificación binaria) y mean_squared_error (para regresión):
modelo_secuencial.compile(optimizer='adam', loss='binary_crossentropy')
  • Métricas: Se utilizan para evaluar el rendimiento del modelo durante el entrenamiento y la validación. Ejemplos comunes incluyen accuracy, precision, recall y mean_absolute_error. Se añaden al compilar el modelo:
modelo_secuencial.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
  • Callbacks: Son funciones que se ejecutan en momentos específicos durante el entrenamiento, permitiendo acciones como el guardado del modelo o la modificación de hiperparámetros. Algunos callbacks útiles son EarlyStopping (detiene el entrenamiento si el rendimiento no mejora), ModelCheckpoint (guarda el modelo en puntos de control) y TensorBoard (para visualización en tiempo real):
from tensorflow.keras.callbacks import EarlyStopping

early_stopping = EarlyStopping(monitor='val_loss', patience=3)
modelo_secuencial.fit(X_train, y_train, validation_data=(X_val, y_val), epochs=50, callbacks=[early_stopping])
  • Preprocesamiento: Keras ofrece herramientas para preparar los datos antes del entrenamiento, facilitando tareas de normalización, vectorización y augmentación. Por ejemplo, para normalizar datos numéricos:
from tensorflow.keras.layers import Normalization

normalizador = Normalization()
normalizador.adapt(datos_entrenamiento)
datos_normalizados = normalizador(datos_entrenamiento)
  • Datasets: El módulo keras.datasets proporciona acceso a conjuntos de datos populares como MNIST, CIFAR-10 e IMDB, permitiendo comenzar rápidamente con experimentos y prototipos:
from tensorflow.keras.datasets import mnist

(X_train, y_train), (X_test, y_test) = mnist.load_data()
  • Inicializadores, Regularizadores y Restringidores: Estos componentes controlan la inicialización de los pesos, ayudan a prevenir el sobreajuste y restringen los valores que pueden tomar los pesos:
  • Inicializadores: Determinan cómo se inicializan los pesos, como HeNormal o GlorotUniform.
from tensorflow.keras.initializers import HeNormal

capa = Dense(64, activation='relu', kernel_initializer=HeNormal())
  • Regularizadores: Añaden penalizaciones a la función de pérdida para evitar el sobreajuste, como l1 y l2.
from tensorflow.keras.regularizers import l2

capa = Dense(64, activation='relu', kernel_regularizer=l2(0.01))
  • Restringidores: Limitan los valores que pueden tomar los pesos durante el entrenamiento, como MaxNorm.
from tensorflow.keras.constraints import MaxNorm

capa = Dense(64, activation='relu', kernel_constraint=MaxNorm(max_value=2))
  • Utilidades: Incluyen funciones auxiliares que simplifican tareas comunes, como activaciones predefinidas (e.g., relu, sigmoid), la posibilidad de definir pérdidas y métricas personalizadas, y la Capa Lambda para implementaciones rápidas de capas personalizadas:
from tensorflow.keras.layers import Lambda

capa_personalizada = Lambda(lambda x: x ** 2)

Estos componentes trabajan en conjunto para ofrecer una plataforma robusta y flexible en el desarrollo de modelos de aprendizaje profundo. Al comprender y combinar eficazmente estos elementos, es posible construir modelos más efectivos y adaptados a las necesidades específicas de cada proyecto.

¿Por qué se usa Keras dentro de TensorFlow?

La integración de Keras dentro de TensorFlow responde a la necesidad de proporcionar una interfaz de alto nivel que simplifique el desarrollo de modelos de aprendizaje profundo sin sacrificar la flexibilidad y el control que ofrece TensorFlow. A continuación, se exploran las razones clave por las que Keras se utiliza dentro de TensorFlow:

1. Sintaxis sencilla y amigable

Keras ofrece una interfaz de alto nivel que permite construir modelos rápidamente con una estructura clara y concisa. Esto es ideal para:

  • Prototipación rápida: Experimentar con múltiples arquitecturas en menor tiempo.
  • Accesibilidad: Su facilidad de uso lo hace ideal para principiantes y profesionales que buscan simplicidad.

Por ejemplo, definir un modelo con Keras puede ser tan simple como:

from tensorflow.keras import layers, models

modelo = models.Sequential([
    layers.Dense(64, activation='relu', input_shape=(100,)),
    layers.Dense(10, activation='softmax')
])

2. Aprovechamiento del rendimiento de TensorFlow

Aunque Keras simplifica el proceso, está respaldado por el motor de TensorFlow, que ofrece:

  • Optimización para GPUs y TPUs: Escala los modelos para conjuntos de datos complejos.
  • Rendimiento eficiente: Las capacidades avanzadas de TensorFlow garantizan una ejecución rápida.

Esto permite trabajar en proyectos pequeños o escalar fácilmente a tareas más complejas sin cambiar la estructura del código.

3. Puerta de entrada a funcionalidades avanzadas

Keras permite empezar con un enfoque básico y luego profundizar en las capacidades avanzadas de TensorFlow si es necesario. Por ejemplo:

  • Capas personalizadas: Puedes definir operaciones avanzadas combinando la facilidad de Keras con el control de TensorFlow Core:
from tensorflow.keras.layers import Layer
import tensorflow as tf

class MiCapaPersonalizada(Layer):
    def __init__(self, unidades=32):
        super(MiCapaPersonalizada, self).__init__()
        self.unidades = unidades

    def build(self, input_shape):
        self.peso = self.add_weight(shape=(input_shape[-1], self.unidades),
                                    initializer='random_normal',
                                    trainable=True)

    def call(self, inputs):
        return tf.matmul(inputs, self.peso)

En este ejemplo, la capa personalizada combina la sencillez de Keras con las operaciones de bajo nivel de TensorFlow Core, demostrando la flexibilidad que ofrece esta integración.

4. Integración con herramientas de producción

Keras, al estar dentro de TensorFlow, facilita el uso de herramientas que permiten llevar los modelos a producción:

  • TensorFlow Serving: Implementa modelos en servidores para predicciones en tiempo real.
  • TensorFlow Lite: Ejecuta modelos en dispositivos móviles o IoT.
  • TensorFlow.js: Lleva los modelos al navegador para aplicaciones web interactivas.

5. Funcionalidades avanzadas simplificadas

TensorFlow incluye características como:

  • Autodiferenciación: Simplifica el cálculo de gradientes para entrenar modelos.
  • Ejecución ansiosa (Eager Execution): Permite depurar y probar operaciones en tiempo real.

Con Keras, estas capacidades son accesibles de forma más amigable, mejorando la productividad en proyectos complejos.

6. Ecosistema ampliado

Keras se integra con herramientas clave dentro del ecosistema de TensorFlow, como:

  • TensorBoard: Para visualizar métricas y arquitecturas de modelos.
  • tf.data: Para gestionar datos de manera eficiente.
  • TensorFlow Hub: Para reutilizar modelos preentrenados.

Esto reduce la necesidad de integrar herramientas externas y mejora la experiencia del desarrollador.

7. Actualizaciones y soporte continuo

Keras, al formar parte de TensorFlow, siempre se beneficia de:

  • Mejoras en rendimiento.
  • Compatibilidad con nuevas arquitecturas de hardware.
  • Soporte activo de Google y la comunidad.

Esto asegura que Keras esté a la vanguardia en el aprendizaje profundo.

8. Fomenta la colaboración y estandarización

El uso de Keras como estándar dentro de TensorFlow:

  • Facilita el trabajo en equipo: Proporciona un lenguaje común para describir modelos.
  • Reduce inconsistencias: Unifica herramientas y enfoques en un solo framework.

En resumen, Keras se usa dentro de TensorFlow porque combina la facilidad de uso y la elegancia de una API de alto nivel con el poder y la flexibilidad de un backend robusto. Esta integración permite a los desarrolladores centrarse en la experimentación y la innovación sin preocuparse por la complejidad subyacente del framework, acelerando así el avance en proyectos de aprendizaje profundo.

Diferencias entre Keras y TensorFlow

Keras y TensorFlow son herramientas fundamentales en el aprendizaje profundo, pero sirven a propósitos diferentes dentro del mismo ecosistema. Aunque están estrechamente relacionadas, presentan diferencias clave en su enfoque, funcionalidad y casos de uso. Comprender estas diferencias puede ayudarte a elegir la herramienta adecuada para cada proyecto.

Keras: La simplicidad en el diseño de modelos

Keras es una API de alto nivel integrada en TensorFlow. Su objetivo principal es facilitar el diseño y entrenamiento de modelos de aprendizaje profundo a través de una sintaxis sencilla y legible. Por ejemplo:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Input

modelo = Sequential([
    Input(shape=(784,)),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

Ventajas clave de Keras:

  • Simplicidad: Ideal para prototipar modelos rápidamente.
  • Curva de aprendizaje suave: Perfecto para principiantes o proyectos con arquitecturas comunes.
  • Prototipación rápida: Su enfoque modular permite experimentar con nuevas ideas de forma ágil.

TensorFlow: El control total

TensorFlow es una plataforma más amplia y versátil que permite implementar no solo modelos de aprendizaje profundo, sino también operaciones matemáticas avanzadas y arquitecturas personalizadas. A diferencia de Keras, requiere un enfoque más detallado para definir y entrenar modelos. Por ejemplo:

import tensorflow as tf

# Definir variables y operaciones manualmente
W = tf.Variable(tf.random.normal([784, 64]), name='peso')
b = tf.Variable(tf.zeros([64]), name='sesgo')

def modelo(x):
    return tf.nn.relu(tf.matmul(x, W) + b)

Características destacadas de TensorFlow:

  • Flexibilidad: Permite personalizar cada detalle del modelo y el proceso de entrenamiento.
  • Ecosistema avanzado: Incluye herramientas como TensorFlow Lite (para dispositivos móviles) y TensorFlow Serving (para producción).
  • Rendimiento: Optimiza recursos en hardware especializado como GPUs y TPUs.

Comparación de abstracción

Keras abstrae muchos detalles técnicos de TensorFlow, permitiendo a los desarrolladores concentrarse en el diseño del modelo. TensorFlow, por otro lado, ofrece APIs de bajo nivel para gestionar aspectos como:

  • Funciones de pérdida personalizadas.
  • Algoritmos de optimización avanzados.
  • Definición de gradientes y entrenamiento manual.

Ecosistema y herramientas

TensorFlow incluye un ecosistema robusto que amplía sus capacidades:

  • TensorFlow Lite: Despliega modelos en dispositivos móviles y IoT.
  • TensorFlow Serving: Implementa modelos en servidores para predicciones en tiempo real.
  • TensorFlow.js: Lleva modelos a aplicaciones web utilizando JavaScript.

Keras, como parte de TensorFlow, puede beneficiarse de estas herramientas, pero no las ofrece de manera independiente.

Rendimiento y optimización

TensorFlow permite ajustes avanzados para optimizar el rendimiento en hardware especializado. Esto lo hace ideal para proyectos que demandan un uso eficiente de recursos. Keras, al abstraer estos detalles, puede no ser tan óptimo en escenarios donde el rendimiento es crítico.

Enfoque pedagógico

Keras está diseñado para ser intuitivo, con documentación orientada a ejemplos prácticos y explicaciones claras. TensorFlow, por su mayor amplitud y profundidad, tiene una documentación más técnica y detallada, lo que puede resultar abrumador para principiantes.

En resumen, las principales diferencias entre Keras y TensorFlow son:

  • Nivel de abstracción: Keras ofrece una capa de alto nivel que simplifica el desarrollo, mientras que TensorFlow proporciona control detallado a nivel bajo.
  • Facilidad de uso: Keras prioriza una sintaxis sencilla y directa, ideal para prototipos y usuarios que comienzan en el aprendizaje profundo.
  • Flexibilidad y personalización: TensorFlow permite personalizar cada aspecto del modelo y es más adecuado para arquitecturas y operaciones no convencionales.
  • Ecosistema y herramientas: TensorFlow incluye una variedad de herramientas para despliegue y optimización que no están presentes en Keras de forma independiente.
  • Rendimiento y optimización: TensorFlow ofrece mayores posibilidades para optimizar el rendimiento, especialmente en entornos de producción y con hardware especializado.

Comprender estas diferencias permite elegir la herramienta más adecuada según las necesidades del proyecto y el nivel de experiencia del desarrollador en aprendizaje automático.

Aprende TensorFlow GRATIS online

Todas las lecciones de TensorFlow

Accede a todas las lecciones de TensorFlow y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción Al Deep Learning Y Redes Neuronales

TensorFlow

Introducción Y Entorno

Introducción A Tensorflow

TensorFlow

Introducción Y Entorno

Introducción A Keras

TensorFlow

Introducción Y Entorno

Redes Neuronales De Múltiples Capas

TensorFlow

Introducción Y Entorno

Algoritmo De Backpropagation

TensorFlow

Introducción Y Entorno

Implementación De Una Red Neuronal Con Numpy

TensorFlow

Introducción Y Entorno

Modelo Con Api Secuencial

TensorFlow

Construcción De Modelos Con Keras

Modelo Con Api Funcional

TensorFlow

Construcción De Modelos Con Keras

Subclases De Modelos

TensorFlow

Construcción De Modelos Con Keras

Capas En Keras

TensorFlow

Construcción De Modelos Con Keras

Funciones De Activación

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Densas De Regresión

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Densas De Clasificación Binaria

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Densas De Clasificación Multiclase

TensorFlow

Construcción De Modelos Con Keras

Redes Convolucionales Cnn

TensorFlow

Construcción De Modelos Con Keras

Redes Recurrentes Rnn

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Mixtas

TensorFlow

Construcción De Modelos Con Keras

Api Dataset

TensorFlow

Procesamiento De Datos

Manejo De Valores Faltantes

TensorFlow

Procesamiento De Datos

Encoding De Valores Categóricos En Continuos

TensorFlow

Procesamiento De Datos

Preprocesados De Escalado, Normalización Y Estandarización

TensorFlow

Procesamiento De Datos

Generación De Nuevas Características

TensorFlow

Procesamiento De Datos

Algoritmos De Optimización

TensorFlow

Entrenamiento Y Evaluación De Modelos

Técnicas De Validación

TensorFlow

Entrenamiento Y Evaluación De Modelos

Monitorización De Entrenamiento

TensorFlow

Entrenamiento Y Evaluación De Modelos

Redes Generativas Adversariales Gans

TensorFlow

Técnicas Avanzadas

Transformers

TensorFlow

Técnicas Avanzadas

Autoencoders

TensorFlow

Técnicas Avanzadas

Carga De Capas Ya Hechas

TensorFlow

Técnicas Avanzadas

Regularización De Modelos

TensorFlow

Herramientas Y Optimización

Hiperparámetros Con Keras Tuner

TensorFlow

Herramientas Y Optimización

Tensorboard

TensorFlow

Herramientas Y Optimización

Uso De Tensorflow Keras En Gpu

TensorFlow

Herramientas Y Optimización

Accede GRATIS a TensorFlow y certifícate

Objetivos de aprendizaje de esta lección

  • Comprender qué es Keras y su integración con TensorFlow.
  • Construir modelos de aprendizaje profundo utilizando la API Secuencial y Funcional.
  • Explorar optimizadores, funciones de pérdida y métricas en Keras.
  • Implementar estrategias avanzadas con subclasificación y capas personalizadas.
  • Conocer las ventajas de Keras en entornos de producción y experimentación.