Caffe源码解读(proto和blob)

本文深入解析Caffe的Blob基类,它作为基本数据结构存储输入输出和网络权重。Blob的逻辑结构为4维数组,物理上为连续一维数组。Proto Buffer用于结构化数据存储,编译后生成相应函数。Blob提供了数据访问、拷贝、序列化等功能,并通过Reshape函数调整形状。此外,讲解了SyncedMemory内存管理类的作用。
摘要由CSDN通过智能技术生成

caffe的几大基类

Blob:caffe的基本数据结构。涉及到的所有输入输出、网络参数权重都存储在Blob中

Layer:网络的基础单元,前传反传的实现

Net:将Layer整合起来,搭建神经网络

Solver:定义网络的训练策略

 

caffe.proto

1)Protocol Buffer:一种结构化数据的存储格式,可在编译后生成一些列C的函数。caffe.proto运行后会生成caffe.pb.cc和caffe.pb.h两个文件。

2)在Proto Buffer中,基础数据单元是message,定义多个message打包成一个package。

3)在message中,Required是必须有的值,optional是可选项,repeated表示后面单元为相同类型的一组向量。

Caffe.proto每个message在编译后都会自动生成一些函数,大概是这样一个命名规范:Set_+field 设定值的函数命名,has_ 检查field是否已经被设置, clear_用于清理field,mutable_用于设置string的值,_size用于获取 重复的个数。

 

Blob(连续的4维数组)

在逻辑上是4个维度依次为batch_size,channel_num,height,width的4维数组,在物理上是连续存储的一维数组。

1)数据成员如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值