machine-learning - LMDB记录数据应该如何组织以便Caffe的数据层可以读取它们?

标签 machine-learning deep-learning computer-vision caffe lmdb

我需要创建一个快速、高效、低开销的例程,用于在 LMDB 中存储键/值对,以便 Caffe 的数据层后续使用(即,无需链接到一堆外部库)。

我审查了 caffe.proto、caffe.pb.h 和 caffe.pb.cc 文件以及其他一些与 Google Protocol Buffer 相关的文件,以了解 Datum 类,它是LMDB 记录。

对我来说,最好的选择似乎是对 datum.SerializeToString() 方法的审核,该方法获取包含 Datum 的所有数据结构和嵌套结构,并将它们转换为某种字符串值。然而,在深入研究了 Google 的 protobuf 后,我一直无法找到这个方法的定义位置。

有人能指出我正确的方向吗?显然,如果有一种更快/更好/更便宜的方式来理解序列化 Datum 值应该如何构建,那么我肯定会接受它。谢谢。

最佳答案

我认为您正在寻找 caffe.io.array_to_datum方法:这是 caffe protobuf 接口(interface)的 python 包装器,将 numpy 数组(和可选的整数标签)转换为 Datum 对象。
有一个更全面的示例,介绍如何使用 python 接口(interface)为 caffe 读取/写入 LMDB here .
如果您只是将标记图像列表转换为 LMDB,则可以使用 convert_imageset caffe 附带的工具。

关于machine-learning - LMDB记录数据应该如何组织以便Caffe的数据层可以读取它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52843410/

相关文章:

python - 如何找到逻辑回归模型的特征的重要性?

python - 创建为 RNN 返回数据序列的 Pytorch 数据集的正确方法?

opencv - 可以实时分割吗?

video - 视频动态渲染有多难?

machine-learning - Hyperopt 探索/利用策略

matlab - LIBSVM 是否处理训练中的缺失值?

neural-network - CNN前馈或反向传播模型

c++ - 检测图像中矩形的最简单*正确*方法是什么?

machine-learning - 在训练和测试数据分割之前或之后对数据进行归一化?

csv - Tensorflow 如何将 csv 文件中的单词(字符串)转换为正确的向量