Преобразование данных mnist в lmdb с помощью python приводит к очень большой базе данных

В настоящее время я играю модель lenet, предоставленную caffe.

пример (который находится в пути / к / caffe / examples / mnist / convert_mnist_data.cpp предоставляет программу на c ++ для преобразования данных mnist в lmdb.

Я пишу программу на python, чтобы сделать то же самое, но размер (480 МБ) lmdb намного больше, чем тот, который преобразован в c ++ (60 МБ).

точность теста практически одинакова (98%).

Я хочу знать, почему размер сильно отличается.

Вот программа. Я использую модуль mnist (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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]