Чтение из нескольких файлов TFRecord

Я использую несколько файлов tfRecord и хочу читать из них для создания наборов данных. Я пытаюсь использовать пути from_tensor_slices и использовать этот набор данных для дальнейшего чтения TFRecords

(Преимущества нескольких tfRecords: https://datascience.stackexchange.com/questions/16318/what-is-the-benefit-of-splitting-tfrecord-file-into-shards)

Я хочу знать, есть ли более простой и проверенный способ сделать это.

file_names_dataset = tf.data.Dataset.from_tensor_slices(filenames_full)

def read(inp):
    return tf.data.TFRecordDataset(inp)

file_content = file_names.map(read)

Моим следующим шагом было бы проанализировать набор данных, например, с помощью tf.io.parse_single_example.


person yuvaraj8blr    schedule 29.07.2019    source источник


Ответы (1)


tf.data.TFRecordDataset конструктор уже принимает список или тензор имён файлов. Следовательно, вы можете вызвать его напрямую с вашими именами файлов: file_content = tf.data.TFRecordDataset(filenames_full)

Из tf.io.parse_single_example документации:

Можно увидеть преимущества в производительности, если объединить примеры протоколов с parse_example вместо того, чтобы использовать эту функцию напрямую.

Следовательно, я бы рекомендовал объединить ваш набор данных перед сопоставлением с ним функции tf.io.parse_example:

tf.data.TFRecordDataset(
  filenames_full
).batch(
  my_batch_size
).map(
  lambda batch: tf.io.parse_example(batch, my_features)
)

Если вам нужен полный пример, в этом посте я делюсь своим конвейером ввода (чтение из многих файлов TFRecord).

Добрый, Алексис.

person AlexisBRENON    schedule 23.09.2019