CNN 参数计算

CNN 时间计算复杂度与空间复杂度

即,连续个数与参数个数, 每一个连接都意味着一个计算, 每一个参数都意味一个存储单元。 只计算主要部分。

4577-20180628130716748-1467298616.png

CNN局部连接与权值共享

4577-20180628130727512-986024316.png

如图所示:

全连接:如左图所示,全连接情况下,输入图片为1000x1000像素的图片, 隐藏层为同样的1000x1000个神经元(即1M);每个神经元都与所有的输入像素相连接,总计10^12权值(即,可训练参数);

局部连接:如右图所示,局部连接情况下,输入图片为1000x1000像素的图片, 隐藏层为同样的1000x1000个神经元,卷积核10x10;每个神经元都与输入像素上对应的10x10范围内相连接,总计1000x1000x10x10=10^8权值(即,可训练参数);

权值共享:如右图所示,在局部连接的基础上, 每个神经元都与输入像素上对应的10x10范围内相连接,这个10x10的卷积核(即100个权值)在这层所有神经元间共享, 总计100权值(即,可训练参数);

空间复杂度

空间复杂度即模型的参数数量,体现为模型本身的体积。

$ Space \sim O(K^2 * Cin * Cout) $

  • 空间复杂度只与卷积核的尺寸K、通道数C相关。而与输入图片尺寸无关。
    即:卷积核为K^2个参数, 输入通道Cin是多通道时, 卷积核就自动broadcast成了K^2 * Cin; 当输出多个通道时,再乘以通道数 Cout

计算时间复杂度

时间复杂度即模型的运算次数。
单个卷积层的时间复杂度:$ Time \sim O(M^2 * K^2 * Cin * Cout) $

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

M:输出特征图(Feature Map)的尺寸。
K:卷积核(Kernel)的尺寸。
Cin:输入通道数。
Cout:输出通道数。
输出特征图尺寸又由输入尺寸X、卷积核尺寸K、Padding、 Stride,dilation 这几个参数所决定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值