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

  1. Crea dos tensores constantes x y y con valores de tu elección.
  2. 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

  1. Define una función g(x) = x^3 - 4x + 1.
  2. Calcula el gradiente de g en x = 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.

© Copyright 2024. Todos los derechos reservados