Caffe:整体架构说一下,新加一个层需要哪些步骤,卷积是怎么实现的,多卡机制,数据并行还是模型并行?
参考回答:
总体来说,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是数据并行的。