接下來要分別概述以下內容:
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的運算能力)
參數量取決於顯存大小
