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.Datasetper 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
