IST - Física HowTo - Informática 14:34
2025-12-22
  Bibliotecas
 
     Inteligência artificial
 
        TensorFlow
 
           Tipos
 
              Dataset
 
              Tensor
 

TensorFlow — Dataset

Sumário
1. Introdução
2. tf.data
3. Criar um conjunto de Dataset de origem (tf.data.Dataset)
4. Métodos da classe Dataset
5. Bibliografia
Início

1. Introdução

A classe tf.data.Dataset serve para representar conjuntos de elementos.
  • Criação: Pode ser criado a partir de uma ou mais listas
    dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
    dataset = tf.data.Dataset.from_tensor_slices(([1, 2, 3, 4, 5], [6, 7, 8, 9, 10]))
    
  • Visualização: Para ver o seu conteudo
    for x in dataset:
        print(x)
    
Nota: Vários exemplos foram retirados dos manuais (ver bibliografia).
Início

2. tf.data

  • tf.data.TextLineDataset(fname, compression_type=None, ...):
    Cria um Dataset que contém linhas de um ou mais ficheiros de texto.
Início

3. Criar um conjunto de Dataset de origem (tf.data.Dataset)

Vamos usar tf.data.Dataset para criar um pipeline para alimentar dados num modelo.
  • Criar um conjunto de Dataset :

Bibliografia
Início

4. Métodos da classe Dataset

  • batch: A partir do conjunto inicial de "Dataset", cria "N" 'Dataset' conjuntos de dados consecutivos
    dataset2 = dataset.batch(N, ...)
  • cache: Guarda em "cache" os elementos do conjunto de dados "Dataset"
    dataset = dataset.cache()
  • cardinality: Retorna a cardinalidade do conjunto de dados
    print(dataset.cardinality().numpy())
  • concatenate: Junta dois conjuntos de dados "Dataset"
    ds1 = tf.data.Dataset.range(1, 4)
    ds2 = tf.data.Dataset.range(4, 8)
    ds3 = ds1.concatenate(ds2)
    
  • list_files: Retorna todos os ficheiros correspondentes a file_pattern devidamente normalizados:
    tf.data.Dataset.list_files(file_pattern, ...)
    por defeito, as lista baralha a sequência dos ficheiros (shuffle=True) e não é dada uma seed (seed=None).
  • load: Permite ler um conjunto de dados "Dataset" de um ficheiro. Ver save.
  • map (map_func, ...):
    Aplica a função map_func a todos os elementos do conjunto de dados.
    dataset = tf.data.Dataset.range(1, 6)
    dataset = dataset.map(lambda x: x + 1)
    
    O número de chamadas em paralelo (quantos cores do CPU utilizar) pode ser indicado pelo argumento "num_parallel_calls" (default: None), se se atribuir o valor "tf.data.AUTOTUNE" deixa-se à função a decisão sobre o valor mais conveniente.
  • prefetch (buffer_size, ):
    Cria um conjuntos de dados "Dataset" que pré-pesquisa elementos do conjunto de dados fornecido.
    Este processo permite que os elementos seguintes sejam preparados enquanto o elemento actual está a ser processado. Isto melhora a velocidade de processamento à custa do aumento da memória utilizada.
  • random: Cria um conjuntos de dados "Dataset" com "N" elementos e seed "SEED"
    dataset = tf.data.Dataset.random(seed=SEED).take(N)
  • range: Cria um conjuntos de dados "Dataset" a partir de "range" começando em "N1" e terminando em "N2-1" com passo "Step"
    dataset = tf.data.Dataset.range(N1, N2, Step).as_numpy_iterator()
  • rebatch: Cria um novo conjunto "Dataset" que reorganiza os elementos
    dataset = tf.data.Dataset.range(6)
    ds = ds.batch(2)
    list(ds.as_numpy_iterator())
    ds = ds.rebatch(3)
    list(ds.as_numpy_iterator())
    
  • repeat: Cria um novo conjunto de dados "Dataset" que repete o anterior "N" vezes
    dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
    dataset = dataset.repeat(3)
    
  • save: Permite guarda um conjunto de dados "Dataset" num ficheiro. Ver save.
  • shuffle: Baralha o conjunto de dados, em que o primeiro argumento é número de elementos do conjunto de dados a partir dos quais o novo conjunto de dados será amostrado. Exemplo:
    dataset = tf.data.Dataset.range(10)
    dataset = dataset.shuffle(dataset.cardinality())
    for x in dataset.take(5): print(x.numpy(), end=" ; ")
    print("")
    
  • skip: A partir de um conjunto de dados "Dataset" cria outro que ignora os seus "N" primeiros elementos
    dataset = tf.data.Dataset.range(5)
    dataset = dataset.skip(2)
    
  • take: A partir de um conjunto de dados "Dataset" cria outro com os seus "N" primeiros elementos
    dataset = tf.data.Dataset.range(7)
    dataset = dataset.take(4)
    
  • unbatch: A partir de um conjunto de dados "Dataset" junta os conjuntos divididos num único conjunto
    dataset = tf.data.Dataset.range(10)
    dataset = dataset.batch(3)
    list(dataset.as_numpy_iterator())
    dataset = dataset.unbatch()
    list(dataset.as_numpy_iterator())
    
  • unique: A partir de um conjunto de dados "Dataset" remove os elementos repetidos:
    dataset = tf.data.Dataset.range(4)
    dataset = dataset.repeat(2)
    list(dataset.as_numpy_iterator())
    dataset = dataset.unique()
    list(dataset.as_numpy_iterator())
    
  • zip: A partir de dois conjuntos de dados "Dataset" cria um novo combinando os seus elementos
    ds1 = tf.data.Dataset.range(1, 4)
    ds2 = tf.data.Dataset.range(4, 7)
    ds3 = tf.data.Dataset.zip(ds1, ds2)
    list(ds3.as_numpy_iterator())
    
Início

5. Bibliografia

Início