En aquest tema, aprendrem a utilitzar el mòdul tf.data
de TensorFlow per crear pipelines de dades eficients i escalables. Els pipelines de dades són essencials per a la preparació i el processament de grans volums de dades, especialment en aplicacions de machine learning.
Objectius
- Entendre què és
tf.data
i per què és útil. - Aprendre a crear datasets amb
tf.data.Dataset
. - Manipular i transformar dades utilitzant operacions de
tf.data
. - Implementar pipelines de dades per a tasques de machine learning.
Què és tf.data
?
tf.data
és un mòdul de TensorFlow que proporciona una API per construir pipelines de dades eficients. Permet carregar, transformar i processar dades de manera fàcil i escalable. Això és especialment útil quan es treballa amb grans volums de dades que no caben en memòria.
Avantatges de tf.data
- Eficient: Optimitza el processament de dades per a un rendiment màxim.
- Escalable: Pot gestionar grans volums de dades que no caben en memòria.
- Flexible: Permet una àmplia gamma de transformacions i operacions sobre les dades.
Creació de Datasets
El primer pas per crear un pipeline de dades és crear un dataset. tf.data.Dataset
és la classe principal que utilitzarem per a això.
Exemple bàsic
import tensorflow as tf # Crear un dataset a partir d'una llista data = [1, 2, 3, 4, 5] dataset = tf.data.Dataset.from_tensor_slices(data) # Iterar sobre el dataset for element in dataset: print(element.numpy())
Explicació
from_tensor_slices
: Crea un dataset a partir d'una llista o tensor.- Iteració: Podem iterar sobre el dataset per accedir als seus elements.
Operacions amb Datasets
Un cop tenim un dataset, podem aplicar diverses operacions per transformar les dades.
Mapeig
El mapeig aplica una funció a cada element del dataset.
def increment(x): return x + 1 dataset = dataset.map(increment) for element in dataset: print(element.numpy())
Filtratge
El filtratge selecciona elements del dataset que compleixen una condició.
def is_even(x): return x % 2 == 0 dataset = dataset.filter(is_even) for element in dataset: print(element.numpy())
Batch
El batching agrupa els elements del dataset en lots.
Pipeline de dades complet
Ara que coneixem les operacions bàsiques, crearem un pipeline de dades complet.
Exemple complet
import tensorflow as tf # Crear un dataset a partir d'una llista data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] dataset = tf.data.Dataset.from_tensor_slices(data) # Aplicar operacions dataset = dataset.map(lambda x: x * 2) # Multiplicar cada element per 2 dataset = dataset.filter(lambda x: x % 3 == 0) # Filtrar elements divisibles per 3 dataset = dataset.batch(2) # Agrupar en lots de 2 # Iterar sobre el dataset for batch in dataset: print(batch.numpy())
Explicació
map
: Multiplica cada element per 2.filter
: Filtra elements divisibles per 3.batch
: Agrupa els elements en lots de 2.
Exercicis Pràctics
Exercici 1: Creació i transformació de datasets
- Crea un dataset a partir de la llista
[10, 20, 30, 40, 50]
. - Aplica una funció que divideixi cada element per 10.
- Filtra els elements que siguin majors que 2.
- Agrupa els elements en lots de 2.
Solució
import tensorflow as tf # Pas 1 data = [10, 20, 30, 40, 50] dataset = tf.data.Dataset.from_tensor_slices(data) # Pas 2 dataset = dataset.map(lambda x: x / 10) # Pas 3 dataset = dataset.filter(lambda x: x > 2) # Pas 4 dataset = dataset.batch(2) # Iterar sobre el dataset for batch in dataset: print(batch.numpy())
Exercici 2: Pipeline de dades amb imatges
- Carrega un conjunt d'imatges des d'un directori.
- Redimensiona les imatges a 128x128 píxels.
- Normalitza les imatges perquè els valors estiguin entre 0 i 1.
- Agrupa les imatges en lots de 32.
Solució
import tensorflow as tf # Pas 1 dataset = tf.data.Dataset.list_files("path/to/images/*.jpg") # Pas 2 def load_and_preprocess_image(path): image = tf.io.read_file(path) image = tf.image.decode_jpeg(image, channels=3) image = tf.image.resize(image, [128, 128]) return image dataset = dataset.map(load_and_preprocess_image) # Pas 3 dataset = dataset.map(lambda x: x / 255.0) # Pas 4 dataset = dataset.batch(32) # Iterar sobre el dataset for batch in dataset: print(batch.shape)
Conclusió
En aquest tema, hem après a utilitzar tf.data
per crear pipelines de dades eficients i escalables. Hem vist com crear datasets, aplicar operacions de mapeig, filtratge i batching, i hem implementat pipelines de dades complets. Aquestes habilitats són fonamentals per treballar amb grans volums de dades en aplicacions de machine learning.
En el següent tema, explorarem com augmentar les dades per millorar el rendiment dels nostres models.
Curs de TensorFlow
Mòdul 1: Introducció a TensorFlow
- Què és TensorFlow?
- Configuració de TensorFlow
- Conceptes bàsics de TensorFlow
- Hola món amb TensorFlow
Mòdul 2: Conceptes bàsics de TensorFlow
Mòdul 3: Gestió de dades a TensorFlow
Mòdul 4: Construcció de xarxes neuronals
- Introducció a les xarxes neuronals
- Creació d'una xarxa neuronal simple
- Funcions d'activació
- Funcions de pèrdua i optimitzadors
Mòdul 5: Xarxes neuronals convolucionals (CNNs)
Mòdul 6: Xarxes neuronals recurrents (RNNs)
- Introducció a les RNNs
- Construcció d'una RNN
- Memòria a llarg termini (LSTM)
- Unitats recurrents amb porta (GRUs)
Mòdul 7: Tècniques avançades de TensorFlow
- Capes i models personalitzats
- TensorFlow Hub
- Aprenentatge per transferència
- Ajust de hiperparàmetres