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();

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成同一维度的数据。

我们什么都没有,唯一的本钱就是青春。

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

相关文章:

你感兴趣的文章:

标签云: