【发布时间】:2018-08-06 14:29:03
【问题描述】:
我需要动态创建可以被 Caffe 的数据层读取的 LMDB,并且限制是只有 C 可用于这样做。没有 Python。
另一个人在这里检查了 Caffe-ready LMDB 文件的字节级内容:Caffe: Understanding expected lmdb datastructure for blobs
这是一个很好的说明性示例,但显然并不全面。深入研究后,我找到了由 caffe.proto 定义的 Datum 消息类型,以及由 caffe.proto 中的 protoc 创建的随后的 caffe.pb.h 文件,但这是我遇到了死胡同的地方。
.h 文件中的 Datum 类定义了一个看起来很有前途的方法:
void SerializeWithCachedSizes(::google::protobuf::io::CodedOutputStream* output) const
我猜这就是在发送消息之前对消息进行编码的字节级魔法。
问题:任何人都可以向我指出描述编码如何工作的文档(或任何内容),以便我可以复制它的删节版本吗?在说明性示例中,LMDB 文件包含 MNIST 数据和元数据,0x08 似乎表示下一个值是“通道数”。 0x10 和 0x18 分别表示高度和宽度。 0x28 似乎表示下一个整数标签。以此类推。
我想全面了解所有可能的字节及其含义。
【问题讨论】:
标签: protocol-buffers caffe lmdb