您当前的位置:首页 > IT编程 > 深度学习
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:深度可分离卷积计算量与参数量计算

51自学网 2020-10-09 16:47:18
深度可分离卷积计算   深度学习
这篇教程深度可分离卷积计算量与参数量计算写得很实用,希望能帮到您。

 从卷积神经网络登上历史舞台开始,经过不断的改进和优化,卷积早已不是当年的卷积,诞生了分组卷积(Group convolution)、空洞卷积(Dilated convolution 或 À trous)等各式各样的卷积。今天主要讲一下深度可分离卷积(depthwise separable convolutions),这是Xception以及MobileNet系列的精华所在。而它最早是由Google Brain 的一名实习生 Laurent Sifre 于2013年提出,Sifre在其博士论文中对此进行了详细的分析和实验,有兴趣的可以去翻阅。

    标准卷积过程如下图所示:

标准卷积
 
标准卷积

深度可分离卷积过程如下图所示:

 
深度可分离卷积第一步
 
深度可分离卷积二步

    假设输入特征图大小为 W_in×H_in×M,

    输出特征图大小为 W_out×H_out×N,

    卷积核大小为 D_K×D_K

参数量:

    标准卷积参数量为:

        D_K × D_K × M × N

    深度可分离卷积参数量为:

        D_K × D_K × M + M × N

计算量:

    标准卷积计算量为:

        D_K × D_K × M × W_out × H_out × N

    深度可分离卷积计算量为:

        D_K × D_K × M  × W_out × H_out + M × W_out × H_out × N

3. 深度可分离卷积(depthwise convolution):

例如:input: w*h*c=3*3*3→用三个卷积核:x*x*1,分别于三个通道进行卷积(depthwise conv)→得到3个feature map→用M个1*1*3卷积正常卷积得到M个feature map(pointwise conv)。

4. 卷积与深度可分离卷积的计算量和参数量:

(1)卷积:

  • 计算量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道) * N(输出通道) * K(输出特征大小H) * L(输出特征大小W)
  • 参数量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道) * N(输出通道)

(2)深度可分离卷积:

  • 计算量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道)* K(输出特征大小H) * L(输出特征大小W)+ 1 * 1 * M(输入通道) * N(输出通道) * K(输出特征大小H) * L(输出特征大小W)
  • 参数量:I(卷积核大小H) * J(卷积核大小W) * M(输入通道) + 1 * 1 * M(输入通道) * N(输出通道)

深度可分离卷积详解
深度可分离卷积和正常卷积图文解析浅显易懂
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1