Path: blob/master/site/pt-br/datasets/overview.ipynb
38653 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
tfrecorde 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.DatasetInfocontendo 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.arraytf.data.Dataset->Iterator[Tree[np.array]](Treepode serDictaninhada 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.benchmarkretorna umtfds.core.BenchmarkResultque 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.DatasetInfocomo segundo argumento detfds.as_dataframepara visualizar imagens, áudio, textos, vídeos,...Use
ds.take(x)para exibir apenas os primeirosxexemplos.pandas.DataFramecarregará 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_checksumsEm algum momento, atualize o código de geração do dataset.
Atualize a
VERSIONdo datasetAtualize as
RELEASE_NOTESdo 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).
Ver em TensorFlow.org
Executar no Google Colab
Ver fonte no GitHub
Baixar notebook