首页 > 解决方案 > 如何将多个 tfrecords 文件合并到一个文件中?

问题描述

我的问题是,如果我想为我的数据创建一个 tfrecords 文件,大约需要 15 天才能完成,它有 500000 对模板,每个模板是 32 帧(图像)。为了节省时间,我有 3 个 GPU,所以我想我可以在一个 GPU 上创建三个 tfrocords 文件,每个文件一个文件,然后我可以在 5 天内完成创建 tfrecords。但是后来我搜索了一种将这三个文件合并到一个文件中的方法,但找不到合适的解决方案。

那么有什么方法可以将这三个文件合并到一个文件中,或者有什么方法可以通过提供从三个 tfrecords 文件中提取的一批示例来训练我的网络,知道我正在使用 Dataset API。

标签: merge

解决方案


正如两个月前提出的问题,我认为您已经找到了解决方案。对于以下内容,答案是否定的,您不需要创建单个 HUGE tfrecord 文件。只需使用新的 DataSet API:

dataset = tf.data.TFRecordDataset(filenames_to_read,
    compression_type=None,    # or 'GZIP', 'ZLIB' if compress you data.
    buffer_size=10240,        # any buffer size you want or 0 means no buffering
    num_parallel_reads=os.cpu_count()  # or 0 means sequentially reading
)

# Maybe you want to prefetch some data first.
dataset = dataset.prefetch(buffer_size=batch_size)

# Decode the example
dataset = dataset.map(single_example_parser, num_parallel_calls=os.cpu_count())

dataset = dataset.shuffle(buffer_size=number_larger_than_batch_size)
dataset = dataset.batch(batch_size).repeat(num_epochs)
...

有关详细信息,请查看文档


推荐阅读