首页 > 解决方案 > TFRecord 与 RecordIO

问题描述

TensorFlow Object Detection API 更喜欢 TFRecord 文件格式。MXNet 和 Amazon Sagemaker 似乎使用 RecordIO 格式。这两种二进制文件格式有何不同,或者它们是一回事?

标签: mxnettfrecord

解决方案


RecordIO 和 TFRecord 是相同的,因为它们服务于相同的目的 - 将数据放在一个序列中以便更快地读取,并且它们都使用引擎盖下的协议缓冲区来更好地分配空间。

在我看来,RecordIO 更像是一个总称:一种用于将大量数据存储在一个文件中以便更快读取的格式。一些产品采用“RecordIO”作为实际术语,但在 Tensorflow 中他们决定使用一个特定的词 - TFRecord。这就是为什么有人将 TFRecord 称为“TensorFlow 风格的 RecordIO 格式”。

没有单一的 RecordIO 格式。来自 Apache Mesos 的人也称他们的格式为 RecordIO,他们:“由于没有正式的 RecordIO 格式规范,RecordIO 实现之间往往存在轻微的不兼容性”。而且它们的 RecordIO 格式与 MXNet 使用的格式不同——我没有在每条记录的开头看到“幻数”。

因此,在结构层面上,Tensorflow 的 TFRecordMXNet 的 RecordIO是不同的文件格式,例如,您不希望 MXNet 能够读取 TFRecord,反之亦然。但在逻辑层面上 - 它们具有相同的目的并且可以被认为是相似的。


推荐阅读