Introducció

L'execució immediata (Eager Execution) és un mode de TensorFlow que permet l'execució immediata de les operacions, sense necessitat de construir gràfics computacionals. Això fa que el codi sigui més intuïtiu i fàcil de depurar, especialment per a aquells que estan començant amb TensorFlow.

Avantatges de l'Execució Immediata

  • Facilitat d'ús: Permet escriure codi de TensorFlow de manera més natural i intuïtiva.
  • Depuració: Facilita la depuració del codi, ja que les operacions es poden executar i inspeccionar immediatament.
  • Integració amb Python: Millora la integració amb les biblioteques de Python, com ara NumPy.

Activació de l'Execució Immediata

Per activar l'execució immediata, només cal una línia de codi:

import tensorflow as tf

tf.config.run_functions_eagerly(True)

Exemple Pràctic

Vegem un exemple pràctic de com funciona l'execució immediata amb TensorFlow.

Exemple 1: Operacions bàsiques amb tensors

import tensorflow as tf

# Activar l'execució immediata
tf.config.run_functions_eagerly(True)

# Crear tensors
a = tf.constant([1, 2, 3])
b = tf.constant([4, 5, 6])

# Operacions amb tensors
c = a + b
d = a * b

print("a + b =", c.numpy())
print("a * b =", d.numpy())

Explicació del codi:

  1. Importació de TensorFlow: Importem la biblioteca TensorFlow.
  2. Activació de l'execució immediata: Activem l'execució immediata amb tf.config.run_functions_eagerly(True).
  3. Creació de tensors: Creem dos tensors constants a i b.
  4. Operacions amb tensors: Realitzem operacions de suma i multiplicació amb els tensors.
  5. Impressió dels resultats: Utilitzem .numpy() per obtenir els valors dels tensors i imprimir-los.

Exemple 2: Creació i entrenament d'un model simple

import tensorflow as tf
import numpy as np

# Activar l'execució immediata
tf.config.run_functions_eagerly(True)

# Generar dades sintètiques
x = np.array([[1.0], [2.0], [3.0], [4.0]], dtype=np.float32)
y = np.array([[0.0], [-1.0], [-2.0], [-3.0]], dtype=np.float32)

# Definir un model simple
model = tf.keras.Sequential([
    tf.keras.layers.Dense(units=1, input_shape=[1])
])

# Compilar el model
model.compile(optimizer='sgd', loss='mean_squared_error')

# Entrenar el model
model.fit(x, y, epochs=500, verbose=0)

# Predir amb el model entrenat
print(model.predict([10.0]))

Explicació del codi:

  1. Importació de biblioteques: Importem TensorFlow i NumPy.
  2. Activació de l'execució immediata: Activem l'execució immediata amb tf.config.run_functions_eagerly(True).
  3. Generació de dades sintètiques: Creem arrays NumPy per a les dades d'entrada x i les etiquetes y.
  4. Definició del model: Definim un model seqüencial amb una capa densa.
  5. Compilació del model: Compilem el model amb l'optimitzador 'sgd' i la funció de pèrdua 'mean_squared_error'.
  6. Entrenament del model: Entrenem el model amb les dades sintètiques durant 500 èpoques.
  7. Predicció: Utilitzem el model entrenat per fer una predicció amb una nova entrada.

Exercicis Pràctics

Exercici 1: Operacions amb tensors

Crea dos tensors constants x i y amb valors de la teva elecció i realitza les següents operacions:

  1. Suma
  2. Resta
  3. Divisió

Solució:

import tensorflow as tf

# Activar l'execució immediata
tf.config.run_functions_eagerly(True)

# Crear tensors
x = tf.constant([10, 20, 30])
y = tf.constant([2, 4, 6])

# Operacions amb tensors
sum_result = x + y
sub_result = x - y
div_result = x / y

print("x + y =", sum_result.numpy())
print("x - y =", sub_result.numpy())
print("x / y =", div_result.numpy())

Exercici 2: Entrenament d'un model amb dades sintètiques

Genera dades sintètiques per a un problema de regressió lineal i entrena un model simple de TensorFlow per ajustar aquestes dades.

Solució:

import tensorflow as tf
import numpy as np

# Activar l'execució immediata
tf.config.run_functions_eagerly(True)

# Generar dades sintètiques
x = np.array([[1.0], [2.0], [3.0], [4.0]], dtype=np.float32)
y = np.array([[2.0], [4.0], [6.0], [8.0]], dtype=np.float32)

# Definir un model simple
model = tf.keras.Sequential([
    tf.keras.layers.Dense(units=1, input_shape=[1])
])

# Compilar el model
model.compile(optimizer='sgd', loss='mean_squared_error')

# Entrenar el model
model.fit(x, y, epochs=500, verbose=0)

# Predir amb el model entrenat
print(model.predict([5.0]))

Conclusió

L'execució immediata de TensorFlow facilita la programació i depuració de models, especialment per a aquells que estan començant. Permet una integració més fluida amb Python i fa que el codi sigui més intuïtiu. Amb els exemples i exercicis proporcionats, hauríeu de tenir una bona comprensió de com utilitzar l'execució immediata en els vostres projectes de TensorFlow.

© Copyright 2024. Tots els drets reservats