Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tf.data.TFRecordDataset

TensorFlow 1 wersja Zobacz źródło na GitHub

Dataset zawierająca rekordy z jednego lub więcej plików TFRecord.

Dziedziczy z: Dataset

Stosowany w notebookach

Używany w przewodniku Używany w samouczków

filenames tf.string napinacz lub tf.data.Dataset zawierający jeden lub więcej nazw.
compression_type (Opcjonalnie). A tf.string skalarne oceny jednego z "" (bez kompresji), "ZLIB" lub "GZIP" .
buffer_size (Opcjonalnie). A tf.int64 skalarny reprezentujący liczbę bajtów w buforze odczytu. Jeśli rurociąg jest wejście I / O wąskich gardeł, rozważ ustawienie tego parametru na wartość 1-100 MBS. Jeśli None , stosuje się sensowne domyślne dla lokalnych i zdalnych systemów plików.
num_parallel_reads (Opcjonalnie). A tf.int64 skalarny reprezentujący liczbę plików czytać równolegle. Jeśli wartość jest większa niż jeden, zapisy plików czytać równolegle są wyprowadzane w kolejności z przeplotem. Jeśli rurociąg jest wejście I / O wąskich gardeł, rozważ ustawienie tego parametru na wartość większą niż jeden parallelize I / O. Jeśli None , pliki zostaną odczytane sekwencyjnie.

TypeError Jeżeli którykolwiek argument nie ma oczekiwanego typu.
ValueError Jeżeli którykolwiek argument nie ma oczekiwany kształt.

element_spec W opisie typ elementu zbioru danych.

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

metody

apply

Pokaż źródło

Dotyczy funkcję transformacji na tym zbiorze.

apply umożliwia łączenia niestandardowych Dataset przemian, które są reprezentowane jako funkcje, które mają jednego Dataset argumentu i zwraca przekształconą 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 Funkcja, która trwa jeden Dataset argumentu i zwraca Dataset .

Zwroty
Dataset Dataset zwróconych przez zastosowanie transformation_func do zbioru danych.

as_numpy_iterator

Pokaż źródło

Zwraca iterator który konwertuje wszystkie elementy zbioru danych do numpy.

Użyj as_numpy_iterator aby sprawdzić zawartość zbioru danych. Aby zobaczyć kształtów i typów elementów, elementy zestawu danych drukować bezpośrednio zamiast korzystać 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.