私はこのデータセットに約100万枚の画像をセットし、一度にセットに追加しました。既存のLMDBにデータを追加する方法は?
は、私が「map_sizeは、ここで、XとYのファイルにデータを書き込むための
env = lmdb.open(Path+'mylmdb', map_size=int(1e12)
使用このラインごとに10000サンプルをセットを作成するには、この行を使用し、このarticle
からREFと間違っている確信しています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()で生成後の長さを確認しました。
長さを知っていて、すべての既存のレコードの長さがIDの長さより短い場合は、なぜstr_id = '{:08}'。format(i) '行を{str_id = '{ :08} '。書式(existing_length + 1 + i) '? –
ありがとうございます:) @SudeepJuvekar –