0
현재 caffe에서 제공하는 lenet 모델을 재생하고 있습니다.파이썬으로 mnist 데이터를 lmdb로 변환 매우 큰 데이터베이스
경로 /로/CAFFE/예/mnist/convert_mnist_data.cpp mnist 데이터가 lmdb로 변환하는 C++ 프로그램을 제공합니다. 내가 파이썬 프로그램이 같은 일을 쓰기
에있는 예를 (, 하지만 lmdb의 크기 (4백80메가바이트)는 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()
감사합니다.