РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
515 of 824 menu

Класс TFRecordDataset

Класс TFRecordDataset создает датасет, который читает записи из одного или нескольких файлов формата TFRecord. Первым параметром класс принимает имя файла или список файлов. Формат TFRecord - это простой бинарный формат для хранения последовательности записей, который широко используется в TensorFlow для эффективной загрузки больших объемов данных.

Датасет возвращает тензоры строк с типом tf.string, каждый из которых содержит сериализованную запись. Для извлечения данных из этих записей обычно используется функция tf.io.parse_single_example вместе с описанием признаков.

Синтаксис

tf.data.TFRecordDataset( filenames, compression_type=None, buffer_size=None, num_parallel_reads=None )

Параметры

Класс TFRecordDataset принимает следующие параметры:

  • filenames - строка с именем файла, список строк или тензор строк с именами TFRecord файлов
  • compression_type - тип сжатия данных, может быть None, 'GZIP' или 'ZLIB'
  • buffer_size - размер буфера в байтах для чтения
  • num_parallel_reads - число файлов, читаемых параллельно

Пример

Давайте создадим TFRecord файл и прочитаем его с помощью класса TFRecordDataset:

import tensorflow as tf # Create sample TFRecord file with tf.io.TFRecordWriter('sample.tfrecord') as writer: writer.write(tf.constant('abcde').numpy()) writer.write(tf.constant('model.keras').numpy()) # Read records from file dataset = tf.data.TFRecordDataset('sample.tfrecord') for record in dataset: print(record)

Результат выполнения кода:

tf.Tensor(b'abcde', shape=(), dtype=string) tf.Tensor(b'model.keras', shape=(), dtype=string)

Пример

Давайте создадим TFRecord файл с сериализованными примерами и распарсим их с помощью parse_single_example:

<+python+> import tensorflow as tf # Define feature description feature_description = { 'value': tf.io.FixedLenFeature([], tf.int64), 'label': tf.io.FixedLenFeature([], tf.string) } def serialize_example(value, label): feature = { 'value': tf.train.Feature( int64_list=tf.train.Int64List(value=[value]) ), 'label': tf.train.Feature( bytes_list=tf.train.BytesList( value=[label.encode()] ) ) } example = tf.train.Example( features=tf.train.Features(feature=feature) ) return example.SerializeToString() # Write serialized examples to file with tf.io.TFRecordWriter('data.tfrecord') as writer: writer.write(serialize_example(1, 'abcde')) writer.write(serialize_example(2, 'model.keras')) # Parse records dataset = tf.data.TFRecordDataset('data.tfrecord') def parse_fn(record): return tf.io.parse_single_example( record, feature_description ) parsed = dataset.map(parse_fn) for example in parsed: print(example['value'].numpy(), example['label'].numpy()) <-python+>

Результат выполнения кода:

<+python+> 1 b'abcde' 2 b'model.keras' <-python+>

Пример

Давайте прочитаем несколько TFRecord файлов параллельно с помощью параметра num_parallel_reads:

<+python+> import tensorflow as tf # Create multiple TFRecord files for i in range(2): with tf.io.TFRecordWriter( f'part_{i}.tfrecord' ) as writer: writer.write(tf.constant('abcde').numpy()) writer.write( tf.constant('model.keras').numpy() ) # Read files in parallel files = ['part_0.tfrecord', 'part_1.tfrecord'] dataset = tf.data.TFRecordDataset( files, num_parallel_reads=2 ) for record in dataset: print(record) <-python+>

Результат выполнения кода:

<+python+> tf.Tensor(b'abcde', shape=(), dtype=string) tf.Tensor(b'model.keras', shape=(), dtype=string) tf.Tensor(b'abcde', shape=(), dtype=string) tf.Tensor(b'model.keras', shape=(), dtype=string) <-python+>

Пример

Давайте прочитаем сжатый GZIP TFRecord файл, указав параметр compression_type:

<+python+> import tensorflow as tf # Create GZIP compressed TFRecord file options = tf.io.TFRecordOptions( compression_type='GZIP' ) with tf.io.TFRecordWriter( 'compressed.tfrecord', options ) as writer: writer.write(tf.constant('abcde').numpy()) writer.write(tf.constant('model.keras').numpy()) # Read compressed file dataset = tf.data.TFRecordDataset( 'compressed.tfrecord', compression_type='GZIP' ) for record in dataset: print(record) <-python+>

Результат выполнения кода:

<+python+> tf.Tensor(b'abcde', shape=(), dtype=string) tf.Tensor(b'model.keras', shape=(), dtype=string) <-python+>

Смотрите также

  • класс TextLineDataset,
    который читает строки из текстовых файлов
  • класс FixedLengthRecordDataset,
    который читает записи фиксированной длины
  • класс Iterator,
    который предоставляет доступ к элементам датасета
  • функцию timeseries_dataset_from_array,
    которая создает датасет временных рядов из массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить