CAFFE(FAQ.2):Ubuntu 配置caffe 框架之數據庫讀取,錯誤解決:ImportError: No module named leveldb解決辦法


Z:

在安裝了caffe框架后需要讀取大量的數據進行學習訓練。比如在MNIST識別訓練中,一般直接讀圖片會比較耗時,我們一般將圖片轉存為數據庫中。目前主流的數據庫有以下兩種選擇:

  •   LevelDB
  •   LmDB

如果我們需要的數據格式是LevelDB,我們需要執行以下命令

gedit^C/caffe/examples/mnist/create_mnist.sh

然后在打開的編輯器里面修改create_mnist.sh腳本的代碼,將BACKEND=lmdb改為:BACKEND="leveldb"

 

如下腳本中突出顯示部分:

#!/usr/bin/env sh
# This script converts the mnist data into lmdb/leveldb format,
# depending on the value assigned to $BACKEND.
set -e

EXAMPLE=examples/mnist
DATA=data/mnist
BUILD=build/examples/mnist

#BACKEND="lmdb"
BACKEND="leveldb"

echo "Creating ${BACKEND}..."

rm -rf $EXAMPLE/mnist_train_${BACKEND}
rm -rf $EXAMPLE/mnist_test_${BACKEND}

$BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \
  $DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND}
$BUILD/convert_mnist_data.bin $DATA/t10k-images-idx3-ubyte \
  $DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND}

echo "Done."

我們可以通過如下代碼測試讀取LevelDB數據庫所用時間,具體代碼如下

# coding: utf-8

# # 讀取LevelDb數據庫中的數據

import sys
import caffe
from caffe.proto import caffe_pb2
import leveldb
import numpy as np 
from skimage import io

def leveldb_process(path):
    db = leveldb.LevelDB(path)
    datum = caffe_pb2.Datum()
    
    item_id = 0
    for key,value in db.RangeIter():
        datum.ParseFromString(value)
        label = datum.label
        data = caffe.io.datum_to_array(datum)
        # do something here
        item_id += 1
    print item_id 

if __name__ == '__main__':
    path = sys.argv[1]
    leveldb_process(path)

當執行讀取levelDB數據庫中的數據時出現錯誤提示:ImportError: No module named leveldb解決辦法如下:

打開終端執行命令:

python2 -m pip install leveldb

然后再運行數據庫讀取代碼段即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM