一次卷积的计算量到底有多少 ?

动态卷积过程

一次卷积的计算量,如何计算呢 ,参考上图,只是其中一个channel,

((K*K+1)*C_{in}+ (C_{in}-1))*M*M*C_{out}


其中(这需要对卷积过程有较深的理解)

(K*K+1)表示在一个卷积核计算时在叠加bias,

乘以C_{in}表示在输入的channel方向进行乘积

C_{in}-1 表示一次卷积之后进行C_{in}方向的叠加

((K*K+1)*C_{in}+ (C_{in}-1)) 表示最终汇聚成特征图上的一个点

乘以M*M*C_{out}表示在最终的输出特征图,所有点的的个数


当然简化之后一次卷积的时间按复杂度:  O(K*K*C_{in}*M*M*C_{out})

忽略bias参数,简化之后参数:  K*K*C_{in}*C_{out}


  • M 每个卷积核输出特征图 (Feature~\color{red}{M}ap) 的边长
  • K 每个卷积核 (\color{red}{K}ernel) 的边长
  • C_{in} 每个卷积核的通道数,也即输入通道数,也即上一层的输出通道数。
  • C_{out} 本卷积层具有的卷积核个数,也即输出通道数。
  • 可见,每个卷积层的时间复杂度由输出特征图面积 M^2 、卷积核面积 K^2 、输入 C_{in} 和输出通道数 C_{out} 完全决定。
  • 其中,输出特征图尺寸本身又由输入矩阵尺寸 X 、卷积核尺寸 K 、Padding、 Stride这四个参数所决定,表示如下:

\quad\quad\quad\quad\quad\quad\quad\quad M = (X - K + 2 * Padding) / Stride + 1 \quad\quad\quad\quad\quad\quad\quad\quad

  • 注1:为了简化表达式中的变量个数,这里统一假设输入和卷积核的形状都是正方形。
  • 注2:严格来讲每层应该还包含 1 个 Bias 参数,这里为了简洁就省略了。








ref https://zhuanlan.zhihu.com/p/31575074 

     https://zhuanlan.zhihu.com/p/24837264


  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mtj66

看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值