1. CNN參數
params(w) = co* (ci * kw * kh)
params(b) = co
所以總的參數量為 params = co* (ci * kw * kh + 1)
當使用了BatchNormalization時,不需要bias
2. CNN計算量
FLOPs (乘法) = co* H * W * (ci * kw * kh) 其中H, W代表輸出特征的寬和高
FLOPs (加法(w)) = co* H * W * (ci * kw * kh - 1) 其中H, W代表輸出特征的寬和高
FLOPs (加法(b)) = co* H * W * (1) 其中H, W代表輸出特征的寬和高
所以總的計算量 FLOPs = co* H * W * (ci * kw * kh ) * 2
3. 全連接層參數
全連接即普通的矩陣運算
對於(b, m)的輸入,如果要轉化為(b, n)的輸出
其kernel的維度為(m,n)bias的維度為(n,)
所以,params = (m + 1)* n
4. 全連接層計算量
每一個輸出都需要經過m次乘法,(m-1)次加法 + 1次加法,共有n個輸出
所以總的計算量 FLOPs = 2 * m * n
參考:
(13條消息) 卷積神經網絡參數和浮點計算量的公式_acrith-CSDN博客
深度學習之(經典)卷積層計算量以及參數量總結 (考慮有無bias,乘加情況) - 琴影 - 博客園 (cnblogs.com)