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()
ありがとうございます。