看到有人對flops有疑惑,先捋清這個概念。
FLOPS:注意全大寫,是floating point operations per second的縮寫,意指每秒浮點運算次數,理解為計算速度。是一個衡量硬體效能的指標。
FLOPs:注意s小寫,是floating point operations的縮寫(s表複數),意指浮點運算數,理解為計算量。可以用來衡量演算法/模型的複雜度。
網上打字很容易全小寫,造成混淆,本問題針對模型,應指的是FLOPs。
以下答案不考慮activation function的運算。
卷積層:
Ci=input channel, k=kernel size, HW=output feature map size, Co=output channel.
2是因為一個MAC算2個operations。
不考慮bias時有-1,有bias時沒有-1。
上面針對一個input feature map,沒考慮batch size。
理解上面這個公式分兩步,括號內是第一步,計算出output feature map的一個pixel,然後再乘以HWCo拓展到整個output feature map。括號內的部分又可以分為兩步, ,第一項是乘法運算數,第二項是加法運算數,因為n個數相加,要加n-1次,所以不考慮bias,會有一個-1,如果考慮bias,剛好中和掉,括號內變為
全聯接層:
I=input neuron numbers, O=output neuron numbers.
分析同理,括號內是一個輸出神經元的計算量,拓展到O了輸出神經元。
P.s. NVDIA那個paper公式11有錯誤吧,H和W應該指output feature map吧。
看到有人對flops有疑惑,先捋清這個概念。
FLOPS:注意全大寫,是floating point operations per second的縮寫,意指每秒浮點運算次數,理解為計算速度。是一個衡量硬體效能的指標。
FLOPs:注意s小寫,是floating point operations的縮寫(s表複數),意指浮點運算數,理解為計算量。可以用來衡量演算法/模型的複雜度。
網上打字很容易全小寫,造成混淆,本問題針對模型,應指的是FLOPs。
以下答案不考慮activation function的運算。
卷積層:
Ci=input channel, k=kernel size, HW=output feature map size, Co=output channel.
2是因為一個MAC算2個operations。
不考慮bias時有-1,有bias時沒有-1。
上面針對一個input feature map,沒考慮batch size。
理解上面這個公式分兩步,括號內是第一步,計算出output feature map的一個pixel,然後再乘以HWCo拓展到整個output feature map。括號內的部分又可以分為兩步, ,第一項是乘法運算數,第二項是加法運算數,因為n個數相加,要加n-1次,所以不考慮bias,會有一個-1,如果考慮bias,剛好中和掉,括號內變為
全聯接層:
I=input neuron numbers, O=output neuron numbers.
2是因為一個MAC算2個operations。
不考慮bias時有-1,有bias時沒有-1。
分析同理,括號內是一個輸出神經元的計算量,拓展到O了輸出神經元。
P.s. NVDIA那個paper公式11有錯誤吧,H和W應該指output feature map吧。