Z:
在安装了caffe框架后需要读取大量的数据进行学习训练。比如在MNIST识别训练中,一般直接读图片会比较耗时,我们一般将图片转存为数据库中。目前主流的数据库有以下两种选择:
- LevelDB
- LmDB
我们可以通过如下代码测试读取LmDB数据库所用时间,具体代码如下
1 # coding: utf-8 2 import caffe 3 import numpy as np 4 import lmdb 5 import sys 6 from caffe.proto import caffe_pb2 7 def lmdb_process(db_path): 8 env = lmdb.open(db_path) 9 datum = caffe_pb2.Datum() 10 item_id = 0 11 with env.begin() as txn: 12 cursor = txn.cursor() 13 for key, value in cursor: 14 datum.ParseFromString(value) 15 label = datum.label 16 img = caffe.io.datum_to_array(datum) 17 # do something here 18 item_id +=1 19 print item_id 20 21 if __name__ == '__main__': 22 db_path = sys.argv[1] 23 lmdb_process(db_path)
如果运行没有出错,则在终端上执行如下代码,即可实现读取lmdb数据库所用时间。
1 cd /x...x/pythoncode/ #进入你存放read_lmdb.py的文件夹路径,然后执行 2 3 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版本,执行如下代码:
1 $ python2 --version 2 Python 2.7.14 :: Anaconda, Inc. 3 $ python --version #查看默认版本 4 Python 2.7.14 :: Anaconda, Inc. 5 $ python3 --version 6 Python 3.6.4 :: Anaconda, Inc.
总结:
作者的系统默认使用的python2,执行import lmdb出错提示:ImportError: No module named lmdb
解决办法:python2 -m pip install lmdb(最好不要直接pip install lmdb)