美文网首页
为什么有时Depthwise 卷积比正常卷积更耗时

为什么有时Depthwise 卷积比正常卷积更耗时

作者: 菜鸟瞎编 | 来源:发表于2019-05-05 17:29 被阅读0次

原因:

一、从计算量和内存占用量分析

作者:cs sun
链接:https://www.zhihu.com/question/265434464/answer/306493409
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先,caffe原先的gpu实现group convolution很糟糕,用for循环每次算一个卷积,速度极慢。

第二,cudnn7.0及之后直接支持group convolution,但本人实测,速度比github上几个直接写cuda kernel计算的dw convolution速度慢。例如对于n=128, c=512, h=32, w=32, group=512的卷积跑100次,cudnn 7.0里的group convolution需要4秒多,而yonghenglh6/DepthwiseConvolution大概只需要1秒。

本人分析了一下dw convolution与普通convolution的理论计算复杂度,举例如下:

卷积1:普通卷积,输入为64x64x256,输出为64x64x256,卷积核大小为3x3。

参数为3x3x256x256=590K,计算量为64x64x256x3x3x256=2.42G,计算过程的工作集内存总量(输入输出数据+参数)为64x64x256x2 + 3x3x256x256 = 2.69M。

卷积2:dw卷积,输入为64x64x256,输出为64x64x256,卷积核大小为3x3。

参数为3x3x256=2.3K个,计算量为64x64x256x3x3=9.44M,计算过程的工作集内存总量为64x64x256x2 + 3x3x256=2.10M。

卷积3:普通卷积,输入为64x64x16,输出为64x64x16,卷积核大小为3x3。

参数为3x3x16x16=2.3K个,计算量为64x64x16x3x3x16=9.44M,计算过程的工作集内存总量为64x64x16x2 + 3x3x16x16=133K。

可以看到卷积2肯定比卷积1快,因为计算量下降到1/256了,但卷积2实际上无法达到卷积1的256倍速度(我记得我测得结果大概是快10倍左右),因为工作集内存大小并没有显著降低。卷积2也无法达到卷积3的速度,因为虽然FLOPS相同,但工作集内存大小相差了很多倍,因此单位数据的计算密度小很多,很难充分利用GPU上的计算单元。

二、在传统的卷积层直接加group达到depth-wise的效果

cudnn 7 才开始支持 depthwise convolution,cudnn支持之前,大部分gpu下的实现都是for循环遍历所有group,所以group很多时极慢。
正确的应该用这个https://github.com/yonghenglh6/DepthwiseConvolution

优化:Optimize Deep Learning GPU Operators with TVM: A Depthwise Convolution Example

相关文章

  • 为什么有时Depthwise 卷积比正常卷积更耗时

    原因: 一、从计算量和内存占用量分析 作者:cs sun链接:https://www.zhihu.com/ques...

  • MobileNet V1解读

    Depthwise separable convolution(深度可分离卷积) 核心:深度可分离卷积其实是一种可...

  • 初识mobilenet v1

    Depthwise separable convolution 深度级可分离卷积其实是一种可分解卷积操作(fact...

  • ML和DL中一些知识点

    1.Depthwise卷积相关知识 优点:计算量和运算成本较低 缺点:输入层每个通道独立进行卷积运算,无法有效利用...

  • 7组-MobileNets: Efficient Convolu

    主要贡献 提出MobileNets模型,该模型使用depthwise separable卷积构建轻量级网络,可用于...

  • 卷积-conv, depthwise conv, separab

    Contents: 1. Convolution2. Depthwise Convolution3. Separa...

  • Pointwise Depthwise Groupwise Co

    Pointwise/ Depthwise/ Groupwise 这三种方法都是在标准卷积的基础上进行修改,以达到参...

  • 轻量化卷积神经网络

    MobileNetV1 MobileNet模型的核心就是将原本标准的卷积操作因式分解成一个depthwise co...

  • 深度理解反卷积操作

    今天记录以下卷积和反卷积,在很久之前图像处理时候我们就学过卷积,也知道卷积操作方式,更知道怎么推导和反向传播~~但...

  • 反卷积(转 )

    转 卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积) 1. 图像卷积 卷积的时候需要对卷积核进行1...

网友评论

      本文标题:为什么有时Depthwise 卷积比正常卷积更耗时

      本文链接:https://www.haomeiwen.com/subject/ijbhoqtx.html