码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-24 19:07:50      阅读:366      评论:0      收藏:0      [点我收藏+]

标签:caffe 深度学习   c++   

本教程为了那些第一次使用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的训练之一,数据的组织。

标签:caffe 深度学习   c++   

原文地址:http://blog.csdn.net/cparent/article/details/45250271

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!