FLOPs 計算

FLOPs ? FLOPS ?

FLOPS ( Floating-point operations per second ) 是拿來衡量電腦計算能力的一個指標,常在超級電腦的介紹上看到。

FLOPs ( Floating point operations ) 是用來計算網路模型需要計算的次數。

我們今天要介紹的是 FLOPs 的計算方式 ( 兩者的差異在最後的 s 大小寫 )。

1. Cov. layer ( 卷積層 )

( 2 x Cinput x k2 -1 ) x Row x Col x Cout

上方公式中,

Cinput = 輸入的 channel 數 ; k = kernel size ; Row = 輸出的列數 ; Col = 輸出的行數 ; Cout = 輸出的 channel數

公式我們可以分成兩個部分來看

1 . 前面的括號 可以拆成 ( Cinput x k2 ) + ( Cinput x k2 -1 ) ,第一個括號代表 kernel 中每個點與圖片上同區域的每個點相乘,再乘以多少個 channel 。 後面的括號代表,乘完後的點相加,減一是因為例如 9 個點相加,會執行 8 次的加法,故減一。 執行完這部分得到一個輸出的 pixel 。

2. 後面的 乘以 Row x Col x Cout 代表執行了多少次的與 kernel 相乘。

( 此公式表示沒有 bias的情況 ,如有 bias 則去掉 -1 即可,如下所示 ↓ )

沒 bias : 2 x Cinput x k2 x Row x Col x Cout

2.Fully connected layer ( 全連結層 )

2 x I x O

I = input neurons ; O = output neurons

下圖為一個輸入為2輸出為2的網路,我們可以知道輸出的每個節點會執行 2 次的乘法 ( input 有兩個 neurons ),與 2 次的加法 ( 1次為把乘完的數字相加 ,1 次為加上 bias ) ,有兩個節點所以再乘以 2 ,得到 8 次的計算。

圖片上的 bias 打錯了,不是 bais

假設沒有 bias 公式則為 ( 2 x I -1 ) x O

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *