En aquest tema, aprendrem com treballar amb datasets a TensorFlow. Els datasets són una part fonamental de qualsevol projecte de machine learning, ja que proporcionen les dades necessàries per entrenar i avaluar els models. TensorFlow ofereix una API poderosa i flexible per gestionar datasets de manera eficient.

Objectius

  • Entendre com crear i manipular datasets amb TensorFlow.
  • Aprendre a utilitzar l'API tf.data per construir pipelines de dades.
  • Veure exemples pràctics de com carregar i processar datasets.

Continguts

  1. Creació de datasets amb tf.data.Dataset
  2. Transformacions de datasets
  3. Iteració sobre datasets
  4. Exemples pràctics

  1. Creació de datasets amb tf.data.Dataset

Creació a partir de llistes

Una de les maneres més senzilles de crear un dataset és a partir de llistes de Python.

import tensorflow as tf

# Llistes de dades
features = [1, 2, 3, 4, 5]
labels = [0, 0, 1, 1, 1]

# Creació del dataset
dataset = tf.data.Dataset.from_tensor_slices((features, labels))

# Mostrem els elements del dataset
for element in dataset:
    print(element)

Creació a partir d'arxius

També podem crear datasets a partir d'arxius, com ara arxius CSV.

import tensorflow as tf

# Funció per carregar i processar les dades
def parse_csv(line):
    example_defaults = [[0.0], [0.0], [0.0], [0.0], [0]]  # Tipus de les columnes
    parsed_line = tf.io.decode_csv(line, example_defaults)
    features = tf.stack(parsed_line[:-1])
    label = parsed_line[-1]
    return features, label

# Creació del dataset a partir d'un arxiu CSV
dataset = tf.data.TextLineDataset("path/to/your/file.csv")
dataset = dataset.map(parse_csv)

# Mostrem els elements del dataset
for element in dataset:
    print(element)

  1. Transformacions de datasets

Map

La transformació map aplica una funció a cada element del dataset.

def normalize(features, label):
    features = features / 255.0
    return features, label

dataset = dataset.map(normalize)

Batch

La transformació batch agrupa els elements del dataset en lots.

batch_size = 32
dataset = dataset.batch(batch_size)

Shuffle

La transformació shuffle barreja els elements del dataset.

buffer_size = 100
dataset = dataset.shuffle(buffer_size)

  1. Iteració sobre datasets

Podem iterar sobre els elements del dataset utilitzant un bucle for.

for batch in dataset:
    features, labels = batch
    print(features, labels)

  1. Exemples pràctics

Exemple 1: Carregar i processar el dataset MNIST

import tensorflow as tf

# Carreguem el dataset MNIST
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

# Creem el dataset
train_dataset = tf.data.Dataset.from_tensor_slices((train_images, train_labels))

# Normalitzem les imatges
def normalize(image, label):
    image = tf.cast(image, tf.float32) / 255.0
    return image, label

train_dataset = train_dataset.map(normalize)

# Barregem i agrupem en lots
train_dataset = train_dataset.shuffle(60000).batch(32)

# Iterem sobre el dataset
for images, labels in train_dataset:
    print(images.shape, labels.shape)
    break

Exemple 2: Carregar un dataset des d'un arxiu CSV

import tensorflow as tf

# Funció per carregar i processar les dades
def parse_csv(line):
    example_defaults = [[0.0], [0.0], [0.0], [0.0], [0]]  # Tipus de les columnes
    parsed_line = tf.io.decode_csv(line, example_defaults)
    features = tf.stack(parsed_line[:-1])
    label = parsed_line[-1]
    return features, label

# Creació del dataset a partir d'un arxiu CSV
dataset = tf.data.TextLineDataset("path/to/your/file.csv")
dataset = dataset.map(parse_csv)

# Barregem i agrupem en lots
dataset = dataset.shuffle(1000).batch(32)

# Iterem sobre el dataset
for batch in dataset:
    features, labels = batch
    print(features, labels)
    break

Resum

En aquesta secció, hem après com treballar amb datasets a TensorFlow utilitzant l'API tf.data. Hem vist com crear datasets a partir de llistes i arxius, com aplicar transformacions com map, batch i shuffle, i com iterar sobre els elements del dataset. A més, hem explorat exemples pràctics per carregar i processar datasets reals. Amb aquests coneixements, estem preparats per gestionar dades de manera eficient en els nostres projectes de machine learning.

© Copyright 2024. Tots els drets reservats