Cette page a été traduite par l'API Cloud Translation.
Switch to English

tf.data.TFRecordDataset

plus par

Tensorflow 1 Version Voir la source sur GitHub

Un Dataset comprenant des enregistrements d'un ou plusieurs fichiers TFRecord.

Hérite de: Dataset

Utilisé dans les ordinateurs portables

Utilisé dans le guide Utilisé dans les tutoriels

filenames Un tf.string tenseur ou tf.data.Dataset contenant un ou plusieurs noms de fichiers.
compression_type (Facultatif). Un tf.string scalaire évaluation à l' un des "" (pas de compression), "ZLIB" , ou "GZIP" .
buffer_size (Facultatif). Un tf.int64 scalaire représentant le nombre d'octets dans la mémoire tampon de lecture. Si votre pipeline d'entrée est d'E / S goulot d'étranglement, ce paramètre envisager à une valeur 1-100 MBs. Si None , un défaut raisonnable pour les deux systèmes de fichiers locaux et distants est utilisé.
num_parallel_reads (Facultatif.) Un tf.int64 scalaire représentant le nombre de fichiers à lire en parallèle. Si plus d'un, les enregistrements des fichiers lus en parallèle sont dans un ordre émis entrelacée. Si votre pipeline d'entrée est d'E / S goulot d'étranglement, considérons comme réglage de ce paramètre à une plus grande valeur que l'un de paralléliser les E / S. Si None , les fichiers seront lus séquentiellement.

TypeError Si aucun argument n'a pas le type attendu.
ValueError Si aucun argument n'a pas la forme attendue.

element_spec La spécification du type d'un élément de cet ensemble de données.

dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
dataset.element_spec
TensorSpec(shape=(), dtype=tf.int32, name=None)

méthodes

apply

Voir la source

Applique une fonction de transformation de ce jeu de données.

apply permet de chaîner personnalisés Dataset transformations, qui sont représentés comme des fonctions qui prennent un Dataset arguments et renvoient une transformée Dataset .

dataset = tf.data.Dataset.range(100)
def dataset_fn(ds):
  return ds.filter(lambda x: x < 5)
dataset = dataset.apply(dataset_fn)
list(dataset.as_numpy_iterator())
[0, 1, 2, 3, 4]

args
transformation_func Une fonction qui prend une Dataset argument et renvoie un Dataset de Dataset .

Retour
Dataset Le Dataset est revenu en appliquant transformation_func à cet ensemble de données.

as_numpy_iterator

Voir la source

Retourne un itérateur qui convertit tous les éléments de l'ensemble de données numpy.

Utilisez as_numpy_iterator pour inspecter le contenu de votre ensemble de données. Pour voir des formes d'éléments et types, imprimer dataset éléments directement au lieu d'utiliser as_numpy_iterator .

dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
for element in dataset:
  print(element)
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)

This method requires that you are running in eager mode and the dataset's element_spec contains only TensorSpec components.

dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
for element in dataset.as_numpy_iterator():
  print(element)
1
2
3
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
print(list(dataset.as_numpy_iterator()))
[1, 2, 3]

as_numpy_iterator() will preserve the nested structure of dataset elements.

dataset = tf.data.Dataset.from_tensor_slices({'a': ([1, 2], [3, 4]),
                                              'b': [5, 6]})
list(dataset.as_numpy_iterator()) == [{'a': (1, 3), 'b': 5},
                                      {'a': (2, 4), 'b': 6}]
True

Returns
An iterable over the elements of the dataset, with their tensors converted to numpy arrays.

Raises
TypeError if an element contains a non- Tensor value.
RuntimeError if eager execution is not enabled.

batch

View source

Combines consecutive elements of this dataset into batches.

dataset = tf.data.Dataset.range(8)
dataset = dataset.batch(3)
list(dataset.as_numpy_iterator())
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7])]
dataset = tf.data.Dataset.range(8)
dataset = dataset.batch(3, drop_remainder=True)
list(dataset.as_numpy_iterator())
[array([0, 1, 2]), array([3, 4, 5])]

The components of the resulting element will have an additional outer dimension, which will be batch_size (or N % batch_size for the last element if batch_size does not divide the number of input elements N evenly and drop_remainder is False ). If your program depends on the batches having the same outer dimension, you should set the drop_remainder argument to True to prevent the smaller batch from being produced.

Args
batch_size A tf.int64 scalar tf.Tensor , representing the number of consecutive elements of this dataset to combine in a single batch.
drop_remainder (Optional.) A tf.bool scalar tf.Tensor , representing whether the last batch should be dropped in the case it has fewer than batch_size elements; the default behavior is not to drop the smaller batch.

Returns
Dataset A Dataset .

cache

View source

Caches the elements in this dataset.

The first time the dataset is iterated over, its elements will be cached either in the specified file or in memory. Subsequent iterations will use the cached data.

dataset = tf.data.Dataset.range(5)
dataset = dataset.map(lambda x: x**2)
dataset = dataset.cache()
# The first time reading through the data will generate the data using
# `range` and `map`.
list(dataset.as_numpy_iterator())
[0, 1, 4, 9, 16]
# Subsequent iterations read from the cache.
list(dataset.as_numpy_iterator())
[0, 1, 4, 9, 16]

When caching to a file, the cached data will persist across runs. Even the first iteration through the data will read from the cache file. Changing the input pipeline before the call to .cache() will have no effect until the cache file is removed or the filename is changed.

dataset = tf.data.Dataset.range(5)
dataset = dataset.cache("/path/to/file")  # doctest: +SKIP