深度學習中參數量與計算量的理解


接下來要分別概述以下內容:

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

  參數量取決於顯存大小

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM