2016-07-18 10 views
0

現在、caffeが提供するlenetモデルを再生しています。Pythonでmnistデータをlmdbに変換すると、データベースが非常に大きくなります

例(パスで/カフェ/例/ mnist/convert_mnist_data.cppがlmdbするmnistデータを変換するためのC++プログラムを提供する/にある。

Iは、同じことを行うためのPythonプログラムを書きますしかしlmdbのサイズ(480メガバイト)は、C++(60メガバイト)で変換されたものよりもはるかに大きい。

試験精度がほとんど(98%)と同じである。

私はサイズが異なる理由を知りたいですロット。

ここはプログラムです。私はmnis tモジュール(https://pypi.python.org/pypi/python-mnist/)を使用して、バイナリmnistデータを読み込みます。

from mnist import MNIST 
import numpy as np 
import cv2 
import lmdb 
import caffe 
mndata = MNIST('./data') 
images, labels = mndata.load_training() 
labels = np.array(labels) 
images = np.array(images).reshape(len(labels), 28, 28).astype(np.uint8) 

print type(images[0][0][0]) 

count = 0 
env = lmdb.open('mnist_lmdb', map_size=1000*1000*1000) 

txn = env.begin(write=True) 
for i in xrange(len(labels)): 
    print i 
    datum = caffe.proto.caffe_pb2.Datum() 
    datum.channels = 1 
    datum.height = 28 
    datum.width = 28 
    datum.data = images[i].tobytes() 
    datum.label = labels[i] 
    str_id = '{:08}'.format(i) 
    txn.put(str_id, datum.SerializeToString()) 

    count = count + 1 

    if count % 1000 == 0: 
     txn.commit() 
     txn = env.begin(write=True) 

if count % 1000 != 0: 
    txn.commit() 
env.close() 

ありがとうございます。

答えて

0
env = lmdb.open('mnist_lmdb', map_size=1000*1000*1000) 

デシベルのサイズは主にmap_sizeに依存しているので、あなたがmap_size

を減らすことができます
関連する問題