TFRecord 与 RecordIO

TFRecord vs RecordIO

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

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

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

没有单一的 RecordIO 格式。来自 Apache Mesos 的人,他们也称他们的格式为 RecordIO,say: "Since there is no formal specification of the RecordIO format, there tend to be slight incompatibilities between RecordIO implementations"。而且他们的 RecordIO 格式与 MXNet 使用的格式不同——我没有在每条记录的开头看到 "magic number"。

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