Caffe杂记(1)

一:LMDB
caffe中使用LMDB来存放训练或测试用的数据集,Datalayer层默认的数据格式是lmdb格式。
LMDB(Lighting Memory -Mapped DataBase)的文件结构简单,一个文件夹,里面一个数据文件,一个锁文件。数据可以随意复制,随意传输,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。

caffe的ImageDataLayer层可以直接读取数据文件,引入数据库存放数据集时为了减小IO开销,即避免了文件系统寻址的开销。
caffe中的LMDB数据大约有两类,一类时输入DataLayer的训练或测试数据集,一类是extract_feature输出的特征数据。

二:Datum数据结构
Datum将数据和标签封装在一起,兼容整型和浮点型,存放进LMDB数据库的便是Datum序列化生成的字符串。

三:hpp文件便是将定义和实现都包含在同一文件中。

四: caffe.proto
protobuf结构:序列化框架,可以很轻松的调用相关方法来完成业务数据的序列化和反序列化。
protobuf repeated类型相当于std的vector,用来存放N个相同类型的内容。
1、定义一个protobuf结构:
message Person
{
required int32 age = 1;
required string name = 2;
}
message Family
{
repeated Person person = 1;
}
2、protobuf 特点
结构性能好,效率高,为了提高性能,采用二进制编码的方式,因此可读性相对很差,protobuf独立 于语言,独立于平台。
3、消息机制
消息至少有一个字段组成,字段的格式为:
限定修饰符 | 数据类型 | 字段名称 | = | 字段编码值 | 字段默认值(可选) |
required:必须字段:对于发送方和接收方都必须设置该字段。
optional:可选字段:对于发送方,可选择发送或者不发送,对于接收方,如果能识别,则处理,如果不识别,则不做处理。
repeated:特性和optional一样,但一次可以包含多个值,可看作传递一个数组。

五:单词
specifies(指定,详述)
exclude fields(排除字段)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值