CNN 与 LSTM 模型复杂度分析
文章目錄
- 0.關于Neural Network 的復雜度
- 1.CNN 模型復雜度
- 2.LSTM 模型復雜度
- 3.References
Author: Cao Shengming
Email: caoshengming@trio.ai
Company: Trio 北京(三角獸)科技有限公司
0.關于Neural Network 的復雜度
NN 模型的復雜度一般可以從兩個方面來刻畫:
時間復雜度:
時間復雜度與硬件執行息息相關,但是一般表示模型時間復雜度的方法,可以是某一層、或者產生某個結果所需要的操作(operation)數、所需要處理的元素(elements)個數或者完成某個操作所需要經歷的路徑長度(path length)。
空間復雜度:
空間復雜度與模型容量是息息相關的,這里我們可以將空間復雜度簡單理解為模型的參數數量,也就是說 parameters per layer 就可以認為是該層的模型復雜度。
(Note: 下邊如果不做特殊說明,我們將先講述空間復雜度的狀況。)
1.CNN 模型復雜度
常見的 CNN 模型一般包含以下集中類型的層,卷積層、池化層和全連接層。假設卷積核大小為 H*W,input channel 為 I,out channel 為 O。
輸入層和輸出層暫時先不考慮,輸入層沒有參數,而輸出層一般是全連接層,就不做單獨分析。
該層 filter 數量總數為 H*W*I,而每個將被映射到64個新的通道,加上每個filter 的計算要有一個 bias,所以總的參數數量為(H*W*I+1)*O。
一般的池化層屬于固定操作,沒有權重系數。
全連接層也好理解,前后要是 n,m 維的輸入輸出,所以其參數數量為(n+1)*m。
2.LSTM 模型復雜度
如圖所示LSTM將一共維護4套參數,分別對應輸入門、輸出門、遺忘門和候選態。所以總的參數數量如下所示:
Number_of_weight = 4 * Hidden_size * (Input_size + Bias + Output_size)其中當不做 project 的時候,Output_size 和 Hidden_size 實際上是一致的。
其中 Input_size + Output_size 實際上就是 concat[ht?1h_{t-1}ht?1?, x] 。假設只有一個 hidden unit 那么參數數量為num(ht?1h_{t-1}ht?1?) + num(x) + num(bias),所以所有的 hidden unit 加起來只需要在前邊乘以 hidden_size 就可以。
但我們還可以整體來理解,LSTM 中的參數我們可以簡化為 U ,V 兩個矩陣,其分別對輸入和輸出做映射,U 的維度為 hidden*Input,V 的維度是 hidden*hidden。所以這樣分開理解也可以,網絡在學習的就是這兩個矩陣,所以總的數量為 4(hidden*Input + hidden*hidden + hidden) 這也就是我們常看到的 4(nm+ n2n^2n2 +n),其中 n 為 hidden_size,m 為 input_size。
3.References
總結
以上是生活随笔為你收集整理的CNN 与 LSTM 模型复杂度分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习中的评价指标--1[F,P,R]
- 下一篇: Paper Reading: Paper