深度学习中参数量与计算量的理解
转载⾃:
接下来要分别概述以下内容:
  1 ⾸先什么是参数量,什么是计算量
  2 如何计算 参数量,如何统计 计算量
  3 换算参数量,把他换算成我们常⽤的单位,⽐如:mb
  4 对于各个经典⽹络,论述他们是计算量⼤还是参数两,有什么好处
  5 计算量,参数量分别对显存,芯⽚提出什么要求,我们⼜是怎么权衡
1 ⾸先什么是计算量,什么是参数量
  计算量对应我们之前的时间复杂度,参数量对应于我们之前的空间复杂度,这么说就很明显了
也就是计算量要看⽹络执⾏时间的长短,参数量要看占⽤显存的量
2 如何计算 参数量,计算量
  (1)针对于卷积层的
    其中上⾯的公式是计算时间复杂度(计算量),⽽下⾯的公式是计算空间复杂度(参数量) 
    对于卷积层:
      参数量就是  (kernel*kernel) *channel_input*channel_output
        kernel*kernel 就是weight * weight
        其中kernel*kernel = 1个feature的参数量
      计算量就是  (kernel*kernel*map*map) *channel_input*channel_output
        kernel*kernel 就是weight*weight
        map*map是下个featuremap的⼤⼩,也就是上个weight*weight到底做了多少次运算        其中kernel*kernel*map*map= 1个feature的计算量
   (2)针对于池化层:
      ⽆参数
   (3)针对于全连接层:
        参数量=计算量=weight_in*weight_out
weight是什么词性
3 对于换算计算量
  1⼀般⼀个参数是值⼀个float,也就是4个字节,
  21kb=1024字节
4 对于各个经典⽹络:
  (1)换算
    以alexnet为例:
    参数量:6000万
    设每个参数都是float,也就是⼀个参数是4字节,
    总的字节数是24000万字节
    24000万字节= 24000万/1024/1024=228mb
  (2)为什么模型之间差距这么⼤
    这个关乎于模型的设计了,其中模型⾥⾯最费参数的就是全连接层,这个可以看alex和vgg,    alex,vgg有很多fc(全连接层)
    resnet就⼀个fc
    inceptionv1(googlenet)也是就⼀个fc
  (3)计算量
    densenet其实这个模型不⼤,也就是参数量不⼤,因为就1个fc
    但是他的计算量确实很⼤,因为每⼀次都把上⼀个feature加进来,所以计算量真的很⼤
5 计算量与参数量对于硬件要求
  计算量,参数量对于硬件的要求是不同的
  计算量的要求是在于芯⽚的floaps(指的是gpu的运算能⼒)
  参数量取决于显存⼤⼩

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。