深度學習中的FLOPs是什麼?如何計算的?

1.區分FLOPs和FLOPS

FLOPS:注意全大寫,是floating point operations per second的縮寫,意指每秒浮點運算次數,理解爲計算速度。是一個衡量硬件性能的指標。

FLOPs:注意s小寫,是floating point operations的縮寫(s表複數),意指浮點運算數,理解爲計算量。可以用來衡量算法/模型的複雜度。

注意在深度學習中,我們用的是FLOPs,也就是說計算量,即用來衡量算法/模型的複雜度。

2.計算方法

注:以下不考慮activation function的運算。

2.1 卷積層:

Ci=input channel,

k=kernel size,

H,W=output feature map size,

Co=output channel.

2是因爲一個MAC算2個operations。不考慮bias時有-1,有bias時沒有-1。

注:這裏的MAC是乘加的意思,所以是兩個operation

上面針對一個input feature map,沒考慮batch size。

理解上面這個公式分兩步,括號內是第一步,計算出output feature map的一個pixel,然後再乘以HWCo拓展到整個output feature map。括號內的部分又可以分爲兩步,

第一項是乘法運算數,第二項是加法運算數,因爲n個數相加,要加n-1次,所以不考慮bias,會有一個-1,如果考慮bias,剛好中和掉,括號內變爲 

2.2 全聯接層: 

I=input neuron numbers, O=output neuron numbers.

2是因爲一個MAC算2個operations。

不考慮bias時有-1,有bias時沒有-1。

分析同理,括號內是一個輸出神經元的計算量,拓展到O了輸出神經元。

參考:https://www.zhihu.com/question/65305385/answer/451060549

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章