caffe中卷积的实现,参数计算,FLOPS计算

内容

1. 卷积神经网络中卷积核维度

2.caffe中卷积的实现

3. 卷积参数的计算

4. FLOPS 的计算

5.reference


1. 卷积神经网络中卷积核维度

一个卷积核是三维的(channel×height×width),channel 其中表示输入的维度, 每个卷积层有若干卷积核,一个卷积核输出的feature map是二维的,每层输出的feature map数量和卷积核数量相等。

以经典的AlexNet为例

输入图像是227×227×3(注1),conv1的卷积核参数是:
kernel_size: 11
stride: 4
num_output: 96
因此实际的卷积核维度是11×11×3,channel是输入的图像的第三维(如果是后面的卷积层,其卷积核的channel是与之做卷积的输入的feature map的数量),即3,做卷积的时候,是11×11×3的卷积核和输入图像里的11×11×3的块进行卷积,得到一个值,卷积的过程是在height和width上滑动,第三维上不滑动,因此得到的feature map是二维的。

下面这个动画动态展示了卷积的过程:

2.caffe中卷积的实现

使用im2col(caffe源码这里)的方法将卷积转为矩阵相乘,图如下:

preview

 

3. 卷积参数的计算

传统卷积参数计算

对于某一个卷积层的参数parameters个数为: 

其中  +C_{out} 表示考虑偏置

对于某一个全连接层的参数parameters个数为:N_{in} * N_{out} + N_{out}

其中 +N_{out} 表示考虑偏置, 如果上层是卷积层,N_{in}就是上层的输出三维矩阵元素个数,即三个维度相乘

可分离卷积参数计算

 

图(a)代表标准卷积。假设输入特征图尺寸为,卷积核尺寸为  ,输出特征图尺寸为 ,标准卷积层的参数量为: 。不考虑偏置

图(b)代表深度卷积,图(c)代表逐点卷积,两者合起来就是深度可分离卷积。深度卷积负责滤波,尺寸为(DK,DK,1),共M个,作用在输入的每个通道上;逐点卷积负责转换通道,尺寸为(1,1,M),共N个,作用在深度卷积的输出特征映射上。

深度卷积参数量为 ,逐点卷积参数量为 ,所以深度可分离卷积参数量是标准卷积的 

分组卷积参数计算

 

preview

 

4. FLOPS 的计算

FLOPS:全称是floating point operations per second,意指每秒浮点运算次数

对于某个卷积层,它的FLOPs数量为:[(K_h * K_w * C_{in}) * C_{out} + C_{out}] * (H * W) = num\_params * (H * W),其中num\_params表示该层参数的数目, H*W表示feature map的大小.

5.reference

1.http://caffecn.cn/?/question/158

2.https://www.zhihu.com/question/28385679

3.https://blog.csdn.net/sinat_34460960/article/details/84779219

4.https://zhuanlan.zhihu.com/p/65377955

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值