首页 > 技术文章 > CAFFE(FAQ.1):Ubuntu 配置caffe 框架之数据库读取错误:ImportError: No module named lmdb解决办法

pertor 2018-04-07 10:48 原文

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

 

推荐阅读