caffe学习(1)caffe模型三种结构

caffe模型三种结构

自己写的然而CSDN出bug了,绑定三方账户原来的博客无法编辑,只好转发过来

Blobs, Layers, and Nets: anatomy of a Caffe model


Blob:存储和传递(communication)

blob是数据存储和传输的包装,并且还在底层提供CPU和GPU之间的同步能力。Blob提供了保存数据的统一存储器接口; 例如图像批次,模型参数和用于优化的导数。 在数学上,blob是以C连续方式(C-contiguous fashion)存储的N维数组。
关于C连续方式,stackoverflow有一个解释。该方式主要与Fortran和Matlab相反,是一种以行为主顺序(Row-major order)的存储方式,简单的说就是把一行存完,再存下一行,把第一个通道(channel)的所有行写完后写完再写下一个通道。例如对一批(batches)图像,用4维blob存储,表示为number N(数据批量大小) x channel K(通道、维度特征) x height H (高)x width W(宽),对于索引 (n, k, h, w) 的物理地址就是:((n * K + k) * H + h) * W + w,注意区分大小写,大写是总的,小写是索引值。对于图像是4D的,当然也可以不用4D。具体参数需要根据层类型和数据大小配置。
blob使用了两块存储区域,为data(数据)和diff(网络梯度),实际值可以存储在CPU或GPU上,访问也可以不变(const)访问或者可变(mutable)访问。
const Dtype* cpu_data() const;
Dtype* mutable_cpu_data();
同理可得GPU上diff类型数据操作。官网上有一个example,展示了数据在CPU和GPU上流动操作。

Layer计算和连接

Layer包括很多计算方法,如

  • Vision Layers:Convolution、Pooling、LRN
  • Loss Layers:Softmax、Sum-of-Squares

既然作为计算,就有输入输出,输入从底部(bottom)获取,并通过顶部(top)连接输出。每层须有三个关键计算:setup, forward, and backward。

  • setup:初始化层和连接。
  • forward:底部向顶部计算。
  • backward:给定梯度,从top计算传回bottom。A layer with parameters computes the gradient w.r.t. to its parameters and stores it internally.(是说存在layer中吗)

forward和backward也分为CPU和GPU两个版本。

If you do not implement a GPU version, the layer will fall back to the CPU functions as a backup option. This may come handy if you would like to do quick experiments, although it may come with additional data transfer cost

这里好像是说使用GPU会因为数据需要从CPU复制到GPU上,因此会有数据传输成本,但GPU跑的还是快一些,所以是quick experiments。

Net定义和操作

Net由Layer组成(The net is a set of layers connected in a computation graph有向无环图)。模型初始化由Net :: Init()处理:主要是创建blob和layer,并调用layer里的setup,同时会输出INFO。

模型格式

模型定义在.prototxt文件中,训练好的模型在model目录下.binaryproto格式的文件中,模型的格式由caffe.proto定义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值