深度學習之alexNet算法參數量

                          AlexNet中的參數數量

         AlexNet的網絡結構圖:
AlextNet
總的來說,AlexNet由輸入層,5個卷積層,3個全連接層組成(其中最後一個全連接層也是softmax輸出層)。圖中詳細標出了輸入大小以及各層的結構參數。特別需要注意的是:網絡是分佈在2個GPU上的,部分層只跟同一個GPU中的上一層連接(看起來,stackoverflow那個帖子中題主沒有考慮這個問題)。

接下來梳理一下各層的參數情況:

  • 輸入層:圖片大小:寬高通道(RGB)依次爲W * H * C = 224 x 224 x 3, 即150528像素。
  • 第1個隱層, 卷積層,使用96個11 x 11 x 3的卷積核,如圖所示節點數量爲:55(W) x 55(H) x 48(C) x 2 = 290400(注:這個地方的節點數與論文中提到的要高,有點奇怪。因爲這層跟其他層計算方法一樣,其他層的節點數跟論文中完全一致)。根據卷積層的參數 = 卷積核大小 x 卷積核的數量
    + 偏置數量(即卷積的核數量)
    ,本層參數數量爲:
    (11 * 11 * 3 * 96) + 96 = 34848, 注:參數分爲2部分 ww 和 bb ,“+”前面一部分是 ww 的數量, “+”後面那部分是 bb 的數量,後面的層也按這個思路來計算。
  • 第2個隱層,卷積層, 使用256個5x5x48卷積核,只跟同一個GPU的上一層連接,節點數量:27*27*128*2 = 186624,參數數量:(5*5*48*128+128)*2 = 307456,最後"*2"是因爲網絡層均勻分佈在兩個GPU上,先計算單個GPU上的參數,再乘以GPU數量2。
  • 第3個隱層,卷積層,使用384個3x3x256卷積核,節點數量:13*13*192*2 = 64896,參數數量:3*3*256*384+384 = 885120。
  • 第4個隱層,卷積層,使用384個3x3x192卷積核,只跟同一個GPU的上一層連接,節點數量:13*13*192*2 = 64896,參數數量:(3*3*192*192+192)*2 = 663936。
  • 第5個隱層,卷積層,使用256個3x3x192卷積核,只跟同一個GPU的上一層連接,節點數量:13*13*128*2 = 43264,參數數量:(3*3*192*128+128)*2 = 442624。
  • 第6個隱層,全連接層,節點數爲4096。根據全連接層的參數數量 = 上一層節點數量(pooling之後的) x 下一層節點數量 + 偏置數量(即下一層的節點數量),參數數量爲:(6*6*128*2)*4096+4096 = 37752832,可以看到這個參數數量遠遠大於之前所有卷積層的參數數量之和。也就是說AlexNet的參數大部分位於後面的全連接層。
  • 第7個隱層,全連接層,節點數量爲4096。參數數量爲:4096*4096 + 4096= 16781312。
  • 第8個隱層,全連接層,也是1000-way的softmax輸出層,節點數量爲1000。參數數量爲: 4096*1000 + 1000 = 4097000。

AlexNet參數

總結:

      所有的算法只要你知道網絡結構,根據這個計算過程都能算出參數量。

       1000分類,輸入圖像224*224*3的參數量。6000萬的參數量。

        全連接層佔有90%的參數量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章