在Windows 64位操作系统下 生成 LMDB库文件
样本数据量10万+,大小几百G
存储生LMDB库文件用于训练深度模型
几个要点:
(1)LMDB库文件中的所有记录,均根据唯一键key存储(注意:唯一 ,即不能有重复)
如果不唯一,则具有相同key值的数据在写入时会覆盖之前的已写入的数据
(2)创建LMDB
scoped_ptr<db::DB> train_db(db::GetDB("lmdb"));//以智能指针的方式创建db::DB类型的对象 db 用字符串指定后端为"lmdb"
train_db->Open(db_name_train, db::NEW);//db_name_train文件夹下创建并打开lmdb的操作环境
scoped_ptr<db::Transaction> txn(train_db->NewTransaction()); //创建lmdb文件的操作句柄
(3) LMDB库大小可设定
const size_t LMDB_MAP_SIZE = 1099511627776; // 1 TB
(4)训练样本要进行Shuffle
random_shuffle(vector.begin (), vector.end() );
参考:
http://www.pythonheidong.com/blog/article/137351/ 如何将数据附加到现有的LMDB?
https://www.jb51.net/article/142985.htm Python建库
http://www.cocoachina.com/articles/96887 Windows下最终的数据库大小与插入的数据量
https://www.ctolib.com/lmdbxx.html C++11 wrapper for LMDB
https://blog.csdn.net/bi_diu1368/article/details/90731861 shuffle很重要
https://blog.csdn.net/qq_41855420/article/details/90743114 哪些容器可以shuffle
https://stackoverflow.com/questions/34822152/how-to-append-data-to-existing-lmdb?r=SearchResults how to append data to existing LMDB? 如果追加样本都是一个新类,无法shuffle