CNN 參數計算


CNN 時間計算復雜度與空間復雜度

即,連續個數與參數個數, 每一個連接都意味着一個計算, 每一個參數都意味一個存儲單元。 只計算主要部分。

CNN局部連接與權值共享

如圖所示:

全連接:如左圖所示,全連接情況下,輸入圖片為1000x1000像素的圖片, 隱藏層為同樣的1000x1000個神經元(即1M);每個神經元都與所有的輸入像素相連接,總計10^12權值(即,可訓練參數);

局部連接:如右圖所示,局部連接情況下,輸入圖片為1000x1000像素的圖片, 隱藏層為同樣的1000x1000個神經元,卷積核10x10;每個神經元都與輸入像素上對應的10x10范圍內相連接,總計1000x1000x10x10=10^8權值(即,可訓練參數);

權值共享:如右圖所示,在局部連接的基礎上, 每個神經元都與輸入像素上對應的10x10范圍內相連接,這個10x10的卷積核(即100個權值)在這層所有神經元間共享, 總計100權值(即,可訓練參數);

空間復雜度

空間復雜度即模型的參數數量,體現為模型本身的體積。

$ Space \sim O(K^2 * Cin * Cout) $

  • 空間復雜度只與卷積核的尺寸K、通道數C相關。而與輸入圖片尺寸無關。
    即:卷積核為K^2個參數, 輸入通道Cin是多通道時, 卷積核就自動broadcast成了K^2 * Cin; 當輸出多個通道時,再乘以通道數 Cout

計算時間復雜度

時間復雜度即模型的運算次數。
單個卷積層的時間復雜度:$ Time \sim O(M^2 * K^2 * Cin * Cout) $

注1:為了簡化表達式中的變量個數,這里統一假設輸入和卷積核的形狀都是正方形。
注2:嚴格來講每層應該還包含1個Bias參數,這里為了簡潔就省略了。

M:輸出特征圖(Feature Map)的尺寸。
K:卷積核(Kernel)的尺寸。
Cin:輸入通道數。
Cout:輸出通道數。
輸出特征圖尺寸又由輸入尺寸X、卷積核尺寸K、Padding、 Stride,dilation 這幾個參數所決定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM