La ejecución eager es una característica de TensorFlow que permite la evaluación inmediata de operaciones, sin necesidad de construir gráficos de computación. Esto hace que el desarrollo y la depuración de modelos sean más intuitivos y fáciles de seguir.
¿Qué es la Ejecución Eager?
La ejecución eager es un modo de operación en TensorFlow que evalúa las operaciones de inmediato, devolviendo valores concretos en lugar de construir un gráfico de computación que se ejecuta más tarde. Esto es útil para:
- Desarrollo y depuración: Permite inspeccionar los resultados de las operaciones inmediatamente.
- Interactividad: Facilita el uso de TensorFlow en entornos interactivos como Jupyter Notebooks.
- Simplicidad: Hace que el código sea más sencillo y más parecido a Python estándar.
Activando la Ejecución Eager
Para activar la ejecución eager en TensorFlow, simplemente se debe llamar a tf.enable_eager_execution()
al inicio del script. A partir de TensorFlow 2.x, la ejecución eager está activada por defecto.
import tensorflow as tf # Activar ejecución eager (solo necesario para TensorFlow 1.x) # tf.enable_eager_execution() # Verificar si la ejecución eager está activada print("Ejecución Eager:", tf.executing_eagerly())
Operaciones Básicas con Ejecución Eager
Con la ejecución eager, las operaciones de TensorFlow se comportan como operaciones de Python estándar. Aquí hay algunos ejemplos básicos:
Creación de Tensores
import tensorflow as tf # Crear tensores a = tf.constant([[1, 2], [3, 4]]) b = tf.constant([[5, 6], [7, 8]]) print("Tensor a:\n", a) print("Tensor b:\n", b)
Operaciones Matemáticas
# Suma de tensores c = tf.add(a, b) print("Suma de a y b:\n", c) # Multiplicación de tensores d = tf.multiply(a, b) print("Multiplicación de a y b:\n", d) # Matriz producto e = tf.matmul(a, b) print("Producto de matrices de a y b:\n", e)
Gradientes
La ejecución eager también facilita el cálculo de gradientes, lo cual es esencial para el entrenamiento de modelos de aprendizaje automático.
# Definir una función simple def f(x): return x**2 # Calcular el gradiente de f en x = 3.0 x = tf.constant(3.0) with tf.GradientTape() as tape: tape.watch(x) y = f(x) dy_dx = tape.gradient(y, x) print("Gradiente de f en x=3.0:", dy_dx)
Ejercicio Práctico
Ejercicio 1: Operaciones Básicas
- Crea dos tensores constantes
x
yy
con valores de tu elección. - Realiza las siguientes operaciones y muestra los resultados:
- Suma
- Resta
- Multiplicación
- División
Solución
import tensorflow as tf # Crear tensores constantes x = tf.constant([10, 20, 30]) y = tf.constant([1, 2, 3]) # Suma sum_result = tf.add(x, y) print("Suma de x y y:", sum_result) # Resta sub_result = tf.subtract(x, y) print("Resta de x y y:", sub_result) # Multiplicación mul_result = tf.multiply(x, y) print("Multiplicación de x y y:", mul_result) # División div_result = tf.divide(x, y) print("División de x y y:", div_result)
Ejercicio 2: Gradientes
- Define una función
g(x) = x^3 - 4x + 1
. - Calcula el gradiente de
g
enx = 2.0
.
Solución
import tensorflow as tf # Definir la función g(x) def g(x): return x**3 - 4*x + 1 # Calcular el gradiente de g en x = 2.0 x = tf.constant(2.0) with tf.GradientTape() as tape: tape.watch(x) y = g(x) dy_dx = tape.gradient(y, x) print("Gradiente de g en x=2.0:", dy_dx)
Conclusión
La ejecución eager en TensorFlow simplifica el desarrollo y la depuración de modelos al permitir la evaluación inmediata de operaciones. Esto hace que el código sea más intuitivo y fácil de seguir, especialmente para aquellos que están comenzando con TensorFlow. En el siguiente módulo, exploraremos cómo manejar datos en TensorFlow, lo cual es crucial para el entrenamiento de modelos de aprendizaje automático.
Curso de TensorFlow
Módulo 1: Introducción a TensorFlow
- ¿Qué es TensorFlow?
- Configuración de TensorFlow
- Conceptos Básicos de TensorFlow
- Hola Mundo en TensorFlow
Módulo 2: Fundamentos de TensorFlow
Módulo 3: Manejo de Datos en TensorFlow
Módulo 4: Construcción de Redes Neuronales
- Introducción a Redes Neuronales
- Creando una Red Neuronal Simple
- Funciones de Activación
- Funciones de Pérdida y Optimizadores
Módulo 5: Redes Neuronales Convolucionales (CNNs)
Módulo 6: Redes Neuronales Recurrentes (RNNs)
- Introducción a RNNs
- Construyendo una RNN
- Memoria a Largo Plazo (LSTM)
- Unidades Recurrentes Gated (GRUs)
Módulo 7: Técnicas Avanzadas de TensorFlow
- Capas y Modelos Personalizados
- TensorFlow Hub
- Aprendizaje por Transferencia
- Ajuste de Hiperparámetros