Path: blob/master/site/pt-br/datasets/overview.ipynb
25115 views
TensorFlow Datasets
A biblioteca TensorFlow Datasets (TFDS) fornece uma coleção de datasets prontos que podem ser usados com TensorFlow, Jax e outros frameworks de aprendizado de máquina.
Ela cuida do download e da preparação dos dados de forma determinística e da construção de um tf.data.Dataset
(ou np.array
).
Observação: Não confunda TFDS (esta biblioteca) com tf.data
(API TensorFlow para construir pipelines de dados eficientes). TFDS é um wrapper de alto nível em torno de tf.data
. Se você não estiver familiarizado com esta API, recomendamos que você leia primeiro o guia oficial do tf.data.
Copyright 2020 The TensorFlow Datasets Authors, Licensed under the Apache License, Version 2.0
Instalação
A biblioteca TFDS existe em dois pacotes:
pip install tensorflow-datasets
: a versão estável, lançada a cada poucos meses.pip install tfds-nightly
: lançada todos os dias, contém as últimas versões dos datasets.
Este colab usa tfds-nightly
:
Encontre datasets disponíveis
Todos os construtores de datasets são subclasses de tfds.core.DatasetBuilder
. Para obter a lista de construtores disponíveis, use tfds.list_builders()
ou consulte nosso catálogo.
Carregue um dataset
tfds.load
A maneira mais fácil de carregar um datasets é usando tfds.load
. Ele vai:
Baixar os dados e salvá-os como arquivos
tfrecord
.Carregar o
tfrecord
e criar otf.data.Dataset
.
Alguns argumentos comuns:
split=
: qual divisão ler (por exemplo,'train'
,['train', 'test']
,'train[80%:]'
,...). Consulte o guia da API split.shuffle_files=
: controla se os arquivos devem ser embaralhados entre cada época (o TFDS armazena grandes datasets em múltiplos arquivos menores).data_dir=
: local onde o dataset é salvo (o padrão é~/tensorflow_datasets/
)with_info=True
: retornatfds.core.DatasetInfo
contendo metadados do datasetdownload=False
: desativa o download
tfds.builder
tfds.load
é um wrapper estreito em torno de tfds.core.DatasetBuilder
. Você pode obter a mesma saída usando a API tfds.core.DatasetBuilder
:
tfds build
CLI
Se quiser gerar um dataset específico, você pode usar a linha de comando tfds
. Por exemplo:
Consulte a documentação para conhecer os sinalizadores disponíveis.
Itere sobre um dataset
Como um dict
Por padrão, o objeto tf.data.Dataset
contém um dict
de objetos tf.Tensor
:
Para descobrir os nomes das chaves de um dict
e sua estrutura, consulte a documentação do dataset no nosso catálogo. Por exemplo: a documentação do mnist.
Como tupla (as_supervised=True
)
Ao usar as_supervised=True
, você pode obter uma tupla (features, label)
para datasets supervisionados.
Como numpy (tfds.as_numpy
)
Usa tfds.as_numpy
para converter:
tf.Tensor
->np.array
tf.data.Dataset
->Iterator[Tree[np.array]]
(Tree
pode serDict
aninhada arbitrariamente,Tuple
)
Como tf.Tensor em lote (batch_size=-1
)
Usando batch_size=-1
, você pode carregar o dataset completo num único lote.
Isto pode ser combinado com as_supervised=True
e tfds.as_numpy
para obter os dados como (np.array, np.array)
:
Tenha cuidado para que seu dataset caiba na memória e para que todos os exemplos tenham o mesmo formato.
Faça benchmark dos seus datasets
O benchmarking de um dataset é uma chamada simples tfds.benchmark
em qualquer iterável (por exemplo, tf.data.Dataset
, tfds.as_numpy
,...).
Não esqueça de normalizar os resultados por tamanho de lote com o kwarg
batch_size=
.No resumo, o primeiro lote de aquecimento é separado dos demais para capturar o tempo extra de configuração
tf.data.Dataset
(por exemplo, inicialização de buffers,...).Observe como a segunda iteração é muito mais rápida devido ao cache automático do TFDS.
O
tfds.benchmark
retorna umtfds.core.BenchmarkResult
que pode ser inspecionado para análise posterior.
Crie um pipeline de ponta a ponta
Para ir mais longe, você pode explorar:
Nosso exemplo Keras ponta a ponta para ver um pipeline de treinamento completo (com lote, embaralhamento,...).
Nosso guia de desempenho para melhorar a velocidade de seus pipelines (dica: use
tfds.benchmark(ds)
para fazer benchmark dos seus datasets).
Visualização
tfds.as_dataframe
Os objetos tf.data.Dataset
podem ser convertidos em pandas.DataFrame
com tfds.as_dataframe
para serem visualizados no Colab.
Adicione o
tfds.core.DatasetInfo
como segundo argumento detfds.as_dataframe
para visualizar imagens, áudio, textos, vídeos,...Use
ds.take(x)
para exibir apenas os primeirosx
exemplos.pandas.DataFrame
carregará o dataset completo na memória o que pode exigir muitos recursos para exibir.
tfds.show_examples
tfds.show_examples
retorna um matplotlib.figure.Figure
(no momento, somente datasets de imagem são suportados):
Acesse os metadados do dataset
Todos os construtores incluem um objeto tfds.core.DatasetInfo
contendo os metadados do dataset.
Ele pode ser acessado através das seguintes APIs:
tfds.load
:
tfds.core.DatasetBuilder
:
O dataset info contêm informações adicionais sobre o dataset (versão, citação, página inicial, descrição,...).
Metadados de características (nomes de rótulos, formato de imagem,...)
Acesse tfds.features.FeatureDict
:
Número de classes, nomes de rótulos:
Formatos, dtypes:
Metadados de divisão (por exemplo, nomes de splits, número de exemplos,...)
Acesse tfds.core.SplitDict
:
Divisões (splits) disponíveis:
Obtenha informações sobre a divisão individual:
Também funciona com a API subsplit:
Solução de problemas
Download manual (se o download falhar)
Se o download falhar por algum motivo (por exemplo, offline,...). Você sempre pode baixar manualmente os dados e colocá-los no manual_dir
(o padrão é ~/tensorflow_datasets/downloads/manual/
.
Para descobrir quais URLs baixar, procure:
Para novos datasets (implementados como um diretório):
tensorflow_datasets/
<type>/<dataset_name>/checksums.tsv
. Por exemplo:tensorflow_datasets/datasets/bool_q/checksums.tsv
.Você pode encontrar o local da fonte do dataset no nosso catálogo.
Para datasets antigos:
tensorflow_datasets/url_checksums/<dataset_name>.txt
Corrigindo o NonMatchingChecksumError
A biblioteca TFDS garante o determinismo validandoos checksums das URLs baixadas. Se um NonMatchingChecksumError
for lançado, isto pode indicar que:
O site pode estar fora do ar (por exemplo,
503 status code
). Por favor, verifique a URL.Para URLs do Google Drive, tente novamente mais tarde, pois o Drive às vezes rejeita downloads quando muitas pessoas acessam a mesmo URL. Veja bug
Os arquivos dos datasets originais podem ter sido alterados. Neste caso, o construtor do conjunto de dados TFDS deve ser atualizado. Abra um novo issue no GitHub ou envie um pull request:
Registre os novos checksums com
tfds build --register_checksums
Em algum momento, atualize o código de geração do dataset.
Atualize a
VERSION
do datasetAtualize as
RELEASE_NOTES
do dataset: o que causou a alteração dos checksums? Alguns exemplos mudaram?Garanta que o dataset ainda possa ser compilado.
Envie-nos um pull request
Observação: você também pode inspecionar o arquivo baixado em ~/tensorflow_datasets/download/
.
Citação
Se você estiver usando o tensorflow-datasets
num artigo, inclua a citação a seguir, além de qualquer citação específica dos datasets usados (que pode ser encontrada no catálogo de datasets).