Caffe Tutorial(Nets,Layers,and Blobs:对caffe模型的结构剖析)

Caffe Tutorial1、Nets,Layers,and Blobs:对caffe模型的结构剖析深度网络是组合模型,自然地表示为在大量数据上工作的互联层集合。caffe在其模型结构中通过方式定义网络...
摘要由CSDN通过智能技术生成

Caffe Tutorial

一、Nets,Layers,and Blobs:对caffe模型的结构剖析

深度网络是组合模型,自然地表示为在大量数据上工作的互联层集合。caffe在其模型结构中通过layer-by-layer方式定义网络。网络采用bottom-to-top的方式从输入数据到损失函数定义整个模型。随着数据和导数经过前向和后向流经网络,Caffe存储,传达和操作信息为blob结构:blob是caffe框架的标准矩阵和统一内存接口。 layer是模型和计算的基础。 网络作为layer的集合和连接。 blob的细节描述了信息在层和网络中如何存储和传输。

单独配置解决方案以解耦建模和优化。

1、blob存储和通信

Blob是Caffe处理和传递的实际数据的封装,并且还提供CPU和GPU之间的同步功能。 在数学上,blob是以C连续方式存储的N维数组。

Caffe使用blob存储和传输数据。 Blob提供了保存数据的统一的存储器接口; 例如图像批量(batch),模型参数和用于优化的导数。Blob根据需要从CPU主机同步到GPU设备来隐藏混合CPU / GPU操作的计算和内存开销。 主机和设备上的内存按需分配以提高内存使用率。针对批量图像数据的常规blob维度是数量N×通道K×高度H×宽度W。blob内存在布局中是行主要的,所以最后/最右尺寸变化最快。 例如,在4D blob中,索引(n,k,h,w)处的值物理上位于索引((n * K + k)* H + h)* W + w。

    数量/ N是数据的批量大小(batchsize)。 批处理为通信和设备处理实现更好的吞吐量。 对于batch为256个图像的ImageNet训练任务N= 256。

     信道/ K是特征维度,例如 对于RGB图像K = 3。

请注意,尽管Caffe示例中的许多blob是针对图像应用程序的4D坐标,但对非图像应用程序使用blob完全有效。 例如,如果您只需要像传统多层感知器那样的全连接网络,就可以使用2Dblob(shape(N,D))并调用InnerProductLayer(我们稍后会介绍)。

参数blob尺寸根据图层的类型和配置而有所不同。 对于具有11×11空间维度和3个输入的96个滤波器的卷积层,blob为96×3×11×11。对于具有1000个输出通道和1024个输入通道的内积/完全连接层,参数blob为1000×1024。对于自定义数据,可能需要采用自己的预处理工具或数据层。 但是,一旦你的数据在你的工作中准备完成。模块化的层设计可以完成剩下的工作。

2、使用细节

由于我们通常对Blob内存储的值和梯度感兴趣,Blob使用两处内存,存储数据和数值差分。 前者是我们传递的正常数据,后者是网络计算的梯度。

此外,由于实际值可以存储在CPU和GPU上,因此有两种不同的访问方式:不改变值的const方式和改变值的mutable方式:

const Dtype* cpu_data() const;
Dtype* mutable_cpu_data(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值