En aquest tema, aprendrem com carregar dades en TensorFlow, una habilitat fonamental per a qualsevol projecte de machine learning. TensorFlow proporciona diverses eines i mètodes per gestionar i carregar dades de manera eficient. Explorarem les següents àrees:
- Carregant dades des de fitxers CSV
- Carregant dades des de fitxers d'imatge
- Carregant dades des de fitxers TFRecord
- Utilitzant
tf.data.Dataset
per gestionar dades
- Carregant dades des de fitxers CSV
Els fitxers CSV són un format comú per emmagatzemar dades tabulars. TensorFlow ofereix funcions per carregar i processar aquests fitxers fàcilment.
Exemple pràctic: Carregar un fitxer CSV
import tensorflow as tf # Definim el camí del fitxer CSV csv_file_path = 'path/to/your/file.csv' # Utilitzem tf.data.experimental.make_csv_dataset per carregar el fitxer CSV dataset = tf.data.experimental.make_csv_dataset( csv_file_path, batch_size=32, # Nombre de mostres per batch label_name='target_column', # Nom de la columna objectiu na_value="?", # Valor per a les dades mancants num_epochs=1, # Nombre d'èpoques ignore_errors=True # Ignorar errors durant la lectura ) # Mostrem algunes mostres del dataset for features, label in dataset.take(1): print("Features:", features) print("Label:", label)
Explicació del codi
tf.data.experimental.make_csv_dataset
: Aquesta funció llegeix un fitxer CSV i el converteix en untf.data.Dataset
.batch_size
: Defineix el nombre de mostres per batch.label_name
: El nom de la columna que conté les etiquetes.na_value
: El valor que representa dades mancants.num_epochs
: El nombre de vegades que el dataset serà iterat.ignore_errors
: Si esTrue
, ignora els errors durant la lectura del fitxer.
- Carregant dades des de fitxers d'imatge
TensorFlow també facilita la càrrega d'imatges des de directoris. Utilitzarem tf.keras.preprocessing.image_dataset_from_directory
per carregar imatges.
Exemple pràctic: Carregar imatges des d'un directori
import tensorflow as tf # Definim el camí del directori d'imatges image_directory = 'path/to/your/image_directory' # Utilitzem image_dataset_from_directory per carregar les imatges dataset = tf.keras.preprocessing.image_dataset_from_directory( image_directory, batch_size=32, # Nombre d'imatges per batch image_size=(256, 256), # Mida de les imatges label_mode='int' # Mode d'etiquetatge (int, categorical, None) ) # Mostrem algunes imatges del dataset import matplotlib.pyplot as plt for images, labels in dataset.take(1): plt.figure(figsize=(10, 10)) for i in range(9): ax = plt.subplot(3, 3, i + 1) plt.imshow(images[i].numpy().astype("uint8")) plt.title(int(labels[i])) plt.axis("off") plt.show()
Explicació del codi
tf.keras.preprocessing.image_dataset_from_directory
: Aquesta funció llegeix imatges d'un directori i les converteix en untf.data.Dataset
.batch_size
: Defineix el nombre d'imatges per batch.image_size
: Defineix la mida de les imatges.label_mode
: Defineix el mode d'etiquetatge (int
,categorical
,None
).
- Carregant dades des de fitxers TFRecord
Els fitxers TFRecord són un format binari eficient per emmagatzemar dades. Són especialment útils per a datasets grans.
Exemple pràctic: Carregar un fitxer TFRecord
import tensorflow as tf # Definim el camí del fitxer TFRecord tfrecord_file_path = 'path/to/your/file.tfrecord' # Definim una funció per parsejar els exemples def _parse_function(proto): # Definim les característiques feature_description = { 'feature1': tf.io.FixedLenFeature([], tf.float32), 'feature2': tf.io.FixedLenFeature([], tf.int64), 'label': tf.io.FixedLenFeature([], tf.int64), } return tf.io.parse_single_example(proto, feature_description) # Utilitzem tf.data.TFRecordDataset per carregar el fitxer TFRecord dataset = tf.data.TFRecordDataset(tfrecord_file_path) dataset = dataset.map(_parse_function) # Mostrem algunes mostres del dataset for record in dataset.take(1): print(record)
Explicació del codi
tf.data.TFRecordDataset
: Aquesta funció llegeix un fitxer TFRecord i el converteix en untf.data.Dataset
._parse_function
: Una funció per parsejar els exemples del fitxer TFRecord.tf.io.parse_single_example
: Aquesta funció parseja un sol exemple del fitxer TFRecord.
- Utilitzant
tf.data.Dataset
per gestionar dades
tf.data.Dataset
per gestionar dadesEl mòdul tf.data
proporciona una API potent per construir pipelines de dades eficients.
Exemple pràctic: Crear un pipeline de dades
import tensorflow as tf # Definim una llista de dades data = [1, 2, 3, 4, 5] # Convertim la llista en un tf.data.Dataset dataset = tf.data.Dataset.from_tensor_slices(data) # Apliquem transformacions al dataset dataset = dataset.map(lambda x: x * 2) dataset = dataset.batch(2) # Mostrem algunes mostres del dataset for batch in dataset: print(batch)
Explicació del codi
tf.data.Dataset.from_tensor_slices
: Aquesta funció converteix una llista en untf.data.Dataset
.map
: Aplica una transformació a cada element del dataset.batch
: Agrupa els elements del dataset en batches.
Resum
En aquest tema, hem après com carregar dades en TensorFlow utilitzant diferents mètodes i formats, incloent fitxers CSV, imatges, fitxers TFRecord i el mòdul tf.data.Dataset
. Aquests coneixements són essencials per gestionar dades de manera eficient en projectes de machine learning. En el proper tema, explorarem com crear pipelines de dades amb tf.data
.
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