Caffe学习系列(3):im2col

来源:互联网 发布:中国茶叶出口数据2017 编辑:程序博客网 时间:2024/04/27 10:37

转自

http://www.cnblogs.com/denny402/p/5071126.html

http://www.cnblogs.com/louyihang-loves-baiyan/p/5154337.html

分析很清楚,转载备忘


im2col层

如果对matlab比较熟悉的话,就应该知道im2col是什么意思。它先将一个大矩阵,重叠地划分为多个子矩阵,对每个子矩阵序列化成向量,最后得到另外一个矩阵。

看一看图就知道了:


在caffe中,卷积运算就是先对数据进行im2col操作,再进行内积运算(inner product)。这样做,比原始的卷积操作速度更快。

看看两种卷积操作的异同(输入特征由3个通道组成,每个通道跟不同的卷积核做卷积运算,最后再将得到3个通道的卷积结果相加,得到一份输出特征):

另外,im2col还能使得复杂的卷积梯度求导变得简单化。

(摘自:http://zhangliliang.com/2015/02/11/about-caffe-code-convolutional-layer/)

卷积层的梯度传导公式,参考了这两篇:
http://ufldl.stanford.edu/tutorial/supervised/ConvolutionalNeuralNetwork/
http://cogprints.org/5869/1/cnn_tutorial.pdf

卷积层的参数的梯度可以这样来求:

W(l)kJ(W,b;x,y)b(l)kJ(W,b;x,y)=i=1m(a(l)i)rot90(δ(l+1)k,2),=a,b(δ(l+1)k)a,b.
看上去比全连接层复杂多了,但其实,他们本质上基本是一样的,依然可以套回全连接层的参数求导公式:
W(l)J(W,b;x,y)b(l)J(W,b;x,y)=δ(l+1)(a(l))T,=δ(l+1).

只需要额外增加一步im2col。这一步的意思是将首先将整张图片按照卷积的窗口大小切好(按照stride来切,可以有重叠),然后各自拉成一列。为对于这个小窗口内拉成一列的神经元来说来说,它们跟下一层神经元就是全连接了,所以这个小窗口里面的梯度计算就可以按照全连接来计算就可以了。

0 0
原创粉丝点击