139

问答题 139 /376

Caffe:整体架构说一下,新加一个层需要哪些步骤,卷积是怎么实现的,多卡机制,数据并行还是模型并行?

参考答案

参考回答:

Caffe是深度学习的一个框架,Caffe框架主要包括五个组件:Blob、Solver、Net、Layer、Proto;框架结构如下图所示。这五大组件可以分为两个部分:第一部分,Blob、Layer和Net,这三个组件使得Caffe构成基于自己的模块化的模型,caffe是逐层地定义一个net,而net是从数据输入层到损失曾自下而上定义整个模型,Blob在caffe中是处理和传递实际数据的数据封装包;第二部分:Solver和Proto,这两个模型分别用于协调模型的优化以及用于网络模型的结构定义、存储和读取的方式(Layer-By-Layer)定义Net,而贯穿所有Nets的结构就是caffe框架或模型;对于Layer而言,输入的是Blob数据封装包格式的实际数据,当采用该框架进行训练时,也就是Solver调优模型,则需要Proto这种网络模型的结构定义、存储和读取。

总体来说,caffe是通过Layer

Caffe中卷积运算的原理

俗话说,一图胜千言,首先先给出原理示意图,为了方便理解,这里以二维核为例

滑动窗口在图像中每滑动一个地方,将图像中该滑动窗口图像展开为一列,所有列组成图中的滑动窗口矩阵,这里假设pad=1,stride=1,K=3,则滑动窗口矩阵每行大小为W*H,一共K*K行.

每个核展开为一行,N个核形成的核矩阵大小为N*K*K。

最后将核矩阵和滑动窗口矩阵相乘,每一行就是一个特征图,N个卷积核形成N个特征图。

扩展到三维核

三维核就是多了一个通道的概念,原理与二维核一样。

caffe支持多GPU并行了,原理比较简单,就是每个GPU分别算一个batch,n个GPU,实际的batchsize就是n*batch,比如原来用一个GPU,batchsize设置成256,现在用4个GPU,把batchsize设置成64,和原来的一个GPU的运算是等价的。

实际使用的时候基本不用设置,和原来一样编译好就可以用了。命令就是在-gpu 后面对多个GPU号用逗号隔开,比如-gpu 1,2,3,4 就是同时使用1-4共4个GPU,GPU编号可以不连续,或者直接用-gpu all,就是使用所有的GPU。

Caffe是数据并行的。