Path: blob/master/site/es-419/datasets/overview.ipynb
25115 views
TensorFlow Datasets
TFDS provides a collection of ready-to-use datasets for use with TensorFlow, Jax, and other Machine Learning frameworks.
It handles downloading and preparing the data deterministically and constructing a tf.data.Dataset
(or np.array
).
Note: Do not confuse TFDS (this library) with tf.data
(TensorFlow API to build efficient data pipelines). TFDS is a high level wrapper around tf.data
. If you're not familiar with this API, we encourage you to read the official tf.data guide first.
Copyright 2018 The TensorFlow Datasets Authors, Licensed under the Apache License, Version 2.0
Instalación
TFDS existe en dos paquetes:
pip install tensorflow-datasets
: la versión estable, que se publica cada unos meses.pip install tfds-nightly
: se publica todos los días y contiene las últimas versiones de los conjuntos de datos.
Este colab usa tfds-nightly
:
Buscar conjuntos de datos disponibles
Todos los generadores de conjuntos de datos son subclases de tfds.core.DatasetBuilder
. Para obtener la lista de los generadores disponibles, use tfds.list_builders()
o consulte nuestro catálogo.
Cargar un conjunto de datos
tfds.load
La forma más fácil de cargar un conjunto de datos es tfds.load
que hará lo siguiente:
Descarga los datos y los guarda como archivos
tfrecord
.Carga el archivo
tfrecord
y crea eltf.data.Dataset
.
Algunos argumentos comunes:
split=
: que divide para leer (por ejemplo'train'
,['train', 'test']
,'train[80%:]'
,...). Consulte nuestra guía de API de división.shuffle_files=
: controla si se aleatorizan los archivos entre cada época (TFDS almacena conjuntos de datos grandes en varios archivos más pequeños).data_dir=
: ubicación donde se guarda el conjunto de datos (el valor predeterminado es~/tensorflow_datasets/
)with_info=True
: devuelvetfds.core.DatasetInfo
que contiene los metadatos del conjunto de datosdownload=False
: deshabilita la descarga
tfds.builder
tfds.load
es un contenedor fino alrededor de tfds.core.DatasetBuilder
. Se puede obtener el mismo resultado con la API tfds.core.DatasetBuilder
:
CLI tfds build
Si quiere generar un conjunto de datos específico, puede usar la línea de comando tfds
. Por ejemplo:
Consulte el documento para conocer los indicadores disponibles.
Iterar sobre un conjunto de datos
Como dict
De forma predeterminada, el objeto tf.data.Dataset
contiene un dict
de varios tf.Tensor
:
Para conocer la estructura y los nombres de las claves del dict
, consulte la documentación del conjunto de datos en nuestro catálogo. Por ejemplo: documentación de mnist.
Como tupla (as_supervised=True
)
Al usar as_supervised=True
, puede obtener una tupla (features, label)
en lugar de conjuntos de datos supervisados.
Como numpy (tfds.as_numpy
)
Usa tfds.as_numpy
para convertir:
tf.Tensor
->np.array
tf.data.Dataset
->Iterator[Tree[np.array]]
(Tree
puede serDict
,Tuple
de anidado arbitrario)
Como tf.Tensor por lotes (batch_size=-1
)
Al usar batch_size=-1
, puede cargar el conjunto de datos completo en un solo lote.
Esto se puede combinar con as_supervised=True
y tfds.as_numpy
para obtener los datos como (np.array, np.array)
:
Tenga cuidado de que su conjunto de datos entre en la memoria y que todos los ejemplos tengan la misma forma.
Realizar la prueba comparativa de sus conjuntos de datos
Realizar la prueba comparativa de un conjunto de datos es una simple llamada a tfds.benchmark
en cualquier iterable (por ejemplo, tf.data.Dataset
, tfds.as_numpy
,...).
No olvide normalizar los resultados por tamaño de lote con el kwarg
batch_size=
.En el resumen, se separa el primer lote de calentamiento para capturar el tiempo de configuración adicional de
tf.data.Dataset
(por ejemplo, inicialización de búferes,...).Observe cómo la segunda iteración es mucho más rápida debido al almacenamiento en caché automático de TFDS.
tfds.benchmark
devuelve untfds.core.BenchmarkResult
que se puede inspeccionar para realizar un análisis más profundo.
Construya una canalización de principio a fin
Para profundizar más, puede consultar:
Nuestro ejemplo de Keras de principio a fin para ver un proceso de entrenamiento completo (con procesamiento por lotes, aleatorización,...).
Nuestra guía de rendimiento para mejorar la velocidad de sus canalizaciones (consejo: use
tfds.benchmark(ds)
para realizar pruebas comparativas de sus conjuntos de datos).
Visualización
tfds.as_dataframe
Se pueden convertir los objetos tf.data.Dataset
en pandas.DataFrame
con tfds.as_dataframe
para poder visualizarlos en Colab.
Agregue
tfds.core.DatasetInfo
como segundo argumento detfds.as_dataframe
para visualizar imágenes, audio, textos, videos,...Use
ds.take(x)
para mostrar solo los primeros ejemplosx
.pandas.DataFrame
cargará el conjunto de datos completo en la memoria y puede tardar mucho mostrarlo.
tfds.show_examples
tfds.show_examples
devuelve matplotlib.figure.Figure
(ahora solo se admiten conjuntos de datos de imágenes):
Acceder a los metadatos del conjunto de datos
Todos los generadores incluyen un objeto tfds.core.DatasetInfo
que contiene los metadatos del conjunto de datos.
Se puede acceder a través de:
La API
tfds.load
:
La API
tfds.core.DatasetBuilder
:
La información del conjunto de datos contiene información adicional sobre el conjunto de datos (versión, cita, página de inicio, descripción,...).
Metadatos de las características (nombres de etiquetas, forma de la imagen,...)
Acceda al tfds.features.FeatureDict
:
Cantidad de las clases, nombres de las etiquetas:
Formas, dtypes:
Dividir los metadatos (por ejemplo, dividir los nombres, número de ejemplos,...)
Acceda al tfds.core.SplitDict
:
Divisiones disponibles:
Obtenga información sobre una división:
También funciona con la API subsplit:
Solución de problemas
Descarga manual (si no se puede descargar)
Si no se descarga por algún motivo (por ejemplo, sin conexión,...). Siempre puede descargar los datos de forma manual por su cuenta y colocarlos en manual_dir
(el valor predeterminado es ~/tensorflow_datasets/downloads/manual/
.
Para saber qué URL descargar, consulte:
Para conjuntos de datos nuevos (implementados como carpeta):
tensorflow_datasets/
<type>/<dataset_name>/checksums.tsv
. Por ejemplo:tensorflow_datasets/datasets/bool_q/checksums.tsv
.Puede encontrar la ubicación de origen del conjunto de datos en nuestro catálogo.
Para conjuntos de datos antiguos:
tensorflow_datasets/url_checksums/<dataset_name>.txt
Arreglar NonMatchingChecksumError
TFDS garantiza el determinismo al validar las sumas de verificación de las URL descargadas. Si ocurre un error NonMatchingChecksumError
, puede indicar lo siguiente:
Es posible que el sitio web esté inactivo (por ejemplo,
503 status code
). Revise la URL.Para las URL de Google Drive, inténtelo de nuevo más tarde, ya que, a veces, Drive rechaza las descargas cuando demasiadas personas acceden a la misma URL. Ver error
Es posible que se hayan actualizado los archivos originales del conjuntos de datos. En este caso, se debe actualizar el generador de conjuntos de datos TFDS. Abra una nueva edición de Github o solicitud de cambios (PR):
Registre las nuevas sumas de comprobación con
tfds build --register_checksums
Finalmente actualice el código de generación del conjunto de datos.
Actualize la
VERSION
del conjunto de datosActualize el conjunto de datos
RELEASE_NOTES
: ¿Qué provocó que cambiaran las sumas de comprobación? ¿Cambiaron algunos ejemplos?Asegúrese de que el conjunto de datos aún se pueda construir.
Envíenos una solicitud de cambios (PR)
Nota: También puede inspeccionar el archivo descargado en ~/tensorflow_datasets/download/
.
Cita
Si está usando tensorflow-datasets
para un artículo, incluya la siguiente cita, además de las citas específicas de los conjuntos de datos que usó (puede encontrarlas en el catálogo de conjuntos de datos).