caffe学习资料一

caffe.NetSpec

NetSpec是包含Tops(可以直接赋值作为属性)的集合。调用NetSpec.to_proto创建包含所有层(layers)的网络参数。

n = caffe.NetSpec()是获取Caffe的一个Net。

利用caffe.proto自定义自己的网络:

其中caffe采用了Protocol Buffers的数据格式,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或序列化。它适合做数据存储或RPC数据交换格式。可用于通讯协议,数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。(有C++、Java、Python三种语言的API)。

关于:Protobuf :

一、利用例子的描述

1、书写.proto文件

    编写proto文件,在protobuf的术语中,结构化数据被称为Message。proto文件:

package lm;
message helloworld
{
   required int32    id = 1;  //ID
   required string   str = 2; //str
   optional int32    opt = 3; //optional field
}

该例子中,package名字叫做lm,定义了一个消息helloworld,该消息有三个成员,类型为int32的id, 类型为string的str,opt是一个可选的成员,即消息中可以不包含该成员。

2、 编译.proto文件

protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto
该命令将生成:lm.helloworld.pb.h(定义了C++类的头文件)和lm.helloworld.pb.cc(C++类的实现文件)

在生成的头文件中,定义了一个C++类helloworld,后面的writer和Reader将使用这个类来对消息进行操作。

使用protobuf,可以不用考虑消息格式的细节。

写好proto文件后就可以用protobuf编译器将文件编译成目标语言了,

在阅读caffe.proto中:遇到两种前缀: optional、repeated。 optional就是一个数据,repeated是数组。


required: 一个格式良好的消息必须有这一个字段

optional: 一个格式正确的消息可以有零个或一个这个字段(但不能超过一个)

repeated: 该字段可以在格式良好的消息中重复任意次数(包含零),重复值的顺序将被保留。

blobShape: 指定一个blob的形状(尺寸)

blobProto: 是存储数据单元的,实际上就是定义一个超立方体,中间包含了数据和差(用来计算残差反转之类的)。

Datum :包含要转换的数据


参考文章:

https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值