У меня есть около 1 миллиона изображений, чтобы добавить в этот набор данных 10000 за один раз, прилагаемый к набору.Как добавить данные в существующие LMDB?
Я "м уверен, что map_size неправильно с реф от этого article
использовал эту строку, чтобы создать набор
env = lmdb.open(Path+'mylmdb', map_size=int(1e12)
использовать эту линию каждые 10000 образцов для записи данных в файл, где X и Y заполнители для данных, которые будут ставить в LMDB.
env = create(env, X[:counter,:,:,:],Y,counter)
def create(env, X,Y,N):
with env.begin(write=True) as txn:
# txn is a Transaction object
for i in range(N):
datum = caffe.proto.caffe_pb2.Datum()
datum.channels = X.shape[1]
datum.height = X.shape[2]
datum.width = X.shape[3]
datum.data = X[i].tostring() # or .tostring() if numpy < 1.9
datum.label = int(Y[i])
str_id = '{:08}'.format(i)
# The encode is only essential in Python 3
txn.put(str_id.encode('ascii'), datum.SerializeToString())
#pdb.set_trace()
return env
Как я могу изменить этот код таким образом, что новые данные добавляются в этот LMDB и не была заменена, этот настоящий метод заменяет его в том же положении. Я проверил длину за поколением с помощью env.stat().
Если вы знаете длину и знаете, что все существующие записи имеют идентификаторы меньше длины, почему вы не можете заменить строку 'str_id = '{: 08}'. Format (i)' by 'str_id = '{ : 08} '. Format (existing_length + 1 + i) '? –
Спасибо, что это сработало :) @SudeepJuvekar –