caffe的训练之一,数据的组织。

本教程为了那些第一次使用caffe框架进行深度学习训练的人而生的,我来一个简单关于caffe训练数据的组织来个简单的介绍。我们都知道caffe中使用leveldb 和lmd两种方式进行组织数据。这里介绍一种使用lmd进行训练数据组织的方式。

我来贴一段简单的代码

组织数据。

1.     lmd的打开和写入数据

定义环境lmd的环境

MDB_env *mdb_env;

 MDB_dbi mdb_dbi;

 MDB_val mdb_key, mdb_data;

 MDB_txn *mdb_txn;

 打开数据库

CHECK_EQ(mdb_env_create(&mdb_env),MDB_SUCCESS) << "mdb_env_create failed";

   CHECK_EQ(mdb_env_set_mapsize(mdb_env, 1099511627776), MDB_SUCCESS)  // 1TB

       << "mdb_env_set_mapsize failed";

   CHECK_EQ(mdb_env_open(mdb_env, argv[3], 0, 0664), MDB_SUCCESS)

       << "mdb_env_open failed";

   CHECK_EQ(mdb_txn_begin(mdb_env, NULL, 0, &mdb_txn), MDB_SUCCESS)

       << "mdb_txn_begin failed";

   CHECK_EQ(mdb_open(mdb_txn, NULL, 0, &mdb_dbi), MDB_SUCCESS)

       << "mdb_open failed";

写入具体的数据

mdb_data.mv_size = value.size();//value是个图像数据值,它的size一般是datum.channels()*datum.height()*datum.width();

     mdb_data.mv_data = reinterpret_cast<void*>(&value[0]);

      mdb_key.mv_size = keystr.size();

     mdb_key.mv_data = reinterpret_cast<void*>(&keystr[0]);

     CHECK_EQ(mdb_put(mdb_txn, mdb_dbi, &mdb_key, &mdb_data, 0),MDB_SUCCESS);

CHECK_EQ这个东西是我自己定义的一个断言宏,嘿嘿。懒得贴出来了,大家可以自己编写自己的断言宏。

value和key均为两个string。嘿嘿。是不是觉得非常简单,引用头文件是

#include <glog/logging.h>
#include <leveldb/db.h>
#include <leveldb/write_batch.h>
#include <lmdb.h>
#include <sys/stat.h>


#include <algorithm>
#include <fstream>  // NOLINT(readability/streams)
#include <string>
#include <utility>
#include <vector>


#include "caffe.pb.h"
#include "io.hpp"
#include "rng.hpp"

好了,到此为止大家应该知道怎么组织自己的训练数据了。提示一点,caffe的训练数据的东西都需要进行resize成同一维度的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值