我正在为一个caffe网构建一个lmdb数据库,它存储各种图像,如下所示:
txn.put('{:0>10d}'.format(dbCtr),currImageDatum.SerializeToString())
我将两个字符串存储为键值对。但是,我还想存储一些元数据。具体来说,我想存储图像来自的文件的名称。我的理解是value
必须是单个字符串,而不是[currImageDatum.SerializeToString(), 'myImage.jpg']
。
所以,我能想到的唯一方法就是:
txn.put('{:0>10d}'.format(dbCtr),currImageDatum.SerializeToString() + '__MY_META_DATA__' + 'myImage.jpg')
然后,在读取lmdb时,将值字符串拆分为“__MY_META_DATA__”之前的部分以及之后的部分。
这是一种合理的方法吗?还有其他一些标准方法吗?
答案 0 :(得分:0)
AFAIK caffe的"Data"
图层从lmdb读取Datum
的方式非常严格,您无法轻易更改它。
如果您正在考虑使用lmdb的替代方法,请查看更灵活的"HDF5Data"
图层。