是否有用于解析 TFRecord 文件的 TensorFlow C++ API?

mr4*_*r49 5 tensorflow

有什么等同于tf.python_io.tf_record_iterator()ParseFromString()功能的吗?谷歌搜索并查看 TensorFlow 存储库并没有出现太多结果。

小智 0

TFRecord 的每个条目都按以下方式组织(您可以通过tensorflow存储库中的record_writer.h验证这一点)

class RecordWriter {
 public:
  // Format of a single record:
  //  uint64    length
  //  uint32    masked crc of length
  //  byte      data[length]
  //  uint32    masked crc of data
  static constexpr size_t kHeaderSize = sizeof(uint64) + sizeof(uint32);
  static constexpr size_t kFooterSize = sizeof(uint32);
Run Code Online (Sandbox Code Playgroud)

整个 TFRecord 只是上述结构的重复。

  • 对于两个crc字段,你可以跳过它们(小心)
  • 对于该length字段,您可以在 C++ 中将 8 个字节读取到 uint64_t 变量中
  • 对于data字段来说,其实就是序列化的Protocal Buffermessage

的格式在tensorflow存储库中的example.protomessage中有描述,您可以使用相应版本的protoc对其进行编译并获取API来解码序列化的.data

我的github中给出了更详细的解释和相应的代码,你可以尝试一下:)

  • 欢迎来到堆栈溢出!如果您以任何方式或形式隶属于您链接的插件/网站/博客/产品/项目等,那么请在答案本身中明确提及您的隶属关系。未公开的隶属关系将被视为垃圾邮件并被删除。请阅读[如何不成为垃圾邮件发送者](https://stackoverflow.com/help/promotion) 和[我可以在此网站上支持我的产品吗?](https://stackoverflow.com/help/product-support) 。 (2认同)