merge - 如何将多个 tfrecords 文件合并到一个文件中?
问题描述
我的问题是,如果我想为我的数据创建一个 tfrecords 文件,大约需要 15 天才能完成,它有 500000 对模板,每个模板是 32 帧(图像)。为了节省时间,我有 3 个 GPU,所以我想我可以在一个 GPU 上创建三个 tfrocords 文件,每个文件一个文件,然后我可以在 5 天内完成创建 tfrecords。但是后来我搜索了一种将这三个文件合并到一个文件中的方法,但找不到合适的解决方案。
那么有什么方法可以将这三个文件合并到一个文件中,或者有什么方法可以通过提供从三个 tfrecords 文件中提取的一批示例来训练我的网络,知道我正在使用 Dataset API。
解决方案
正如两个月前提出的问题,我认为您已经找到了解决方案。对于以下内容,答案是否定的,您不需要创建单个 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)
...
有关详细信息,请查看文档。
推荐阅读
- java - 如何获取存储当前 java 文件的路径?
- python - 使用 NLTK 或 Spacy 查找复合词(例如 Call-Taxi、人工智能)的同义词?
- azure - 通过 Web API 而不是 Graph API 重置 Azure AD 密码
- etl - 如何在 informatica 云中比较两个文件中的列名和列顺序
- abap - 有没有办法跟踪在调试器或 ABAP 中执行了哪些代码行?
- azure - 使用 Terraform 模块
- android - 如何在 Play 开发者控制台的应用程序控制面板中的应用程序内容中填写应用程序访问表单?
- postgresql - 如何理解... Select 1 from ... SQL 中的表达式
- javascript - Webpack 对使用过的模块应用 tree-shaking
- reactjs - IonSelect 不想显示 IonSelectOption 警报