Z:
在安装了caffe框架后需要读取大量的数据进行学习训练。比如在MNIST识别训练中,一般直接读图片会比较耗时,我们一般将图片转存为数据库中。目前主流的数据库有以下两种选择:
- LevelDB
- LmDB
我们可以通过如下代码测试读取LmDB数据库所用时间,具体代码如下
# coding: utf-8
import caffe
import numpy as np
import lmdb
import sys
from caffe.proto import caffe_pb2
def lmdb_process(db_path):
env = lmdb.open(db_path)
datum = caffe_pb2.Datum()
item_id = 0
with env.begin() as txn:
cursor = txn.cursor()
for key, value in cursor:
datum.ParseFromString(value)
label = datum.label
img = caffe.io.datum_to_array(datum)
# do something here
item_id +=1
print item_id if __name__ == '__main__':
db_path = sys.argv[1]
lmdb_process(db_path)
如果运行没有出错,则在终端上执行如下代码,即可实现读取lmdb数据库所用时间。
cd /x...x/pythoncode/ #进入你存放read_lmdb.py的文件夹路径,然后执行 time python2 read_lmdb.py /home/pertor/caffe/examples/mnist/mnist_train_lmdb/
有时在运行以上读取数据库LMDB代码时会出现错误的情况,一般LMDB数据库读取错误提示:ImportError: No module named lmdb
(1) 电脑中只存在python2或者python3一种 | sudo pip install lmdb |
(2)电脑中同时存在python2和python3 | 注意在不同的版本中略有改变 python2 -m pip install 模块名称 python3 -m pip install 模块名称 |
当你电脑中同时存在python2和python3时,当caffe用的python2时(推荐),python2 -m pip install lmdb即可。如果用两种版本则python2 -m pip install lmdb、python3 -m pip install lmdb同时运行即可。
具体如何知道电脑中存在那个python版本和自己电脑默认使用的Python版本,执行如下代码:
$ python2 --version
Python 2.7.14 :: Anaconda, Inc.
$ python --version #查看默认版本
Python 2.7.14 :: Anaconda, Inc.
$ python3 --version
Python 3.6.4 :: Anaconda, Inc.
总结:
作者的系统默认使用的python2,执行import lmdb出错提示:ImportError: No module named lmdb
解决办法:python2 -m pip install lmdb(最好不要直接pip install lmdb)