zoukankan      html  css  js  c++  java
  • 深度学习中参数量与计算量的理解

    接下来要分别概述以下内容:

      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

    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的运算能力)

      参数量取决于显存大小

       

  • 相关阅读:
    兔子数
    忠诚
    mysql字段名与关键字冲突(near "to":syntax error)
    C/C++使用心得:enum与int的相互转换
    ubuntu重新安装 apache2
    ubuntu 删除mysql
    Notepad++ 代码格式化
    linux文件字符集转换(utf8-gb2312)
    字符编码详解——彻底理解掌握编码知识,“乱码”不复存在
    c语言判断是否是utf8字符串,计算字符个数
  • 原文地址:https://www.cnblogs.com/lllcccddd/p/10671879.html
Copyright © 2011-2022 走看看