卷积神经网络VGG16权重数量的计算和理解(转载)
VGG16網絡結構是:
_________________________________________________________________
Layer?(type)?????????????????Output?Shape??????????????Param?#???
=================================================================
input_1?(InputLayer)?????????(None,?150,?150,?3)???????0?????????
_________________________________________________________________
block1_conv1?(Conv2D)????????(None,?150,?150,?64)??????1792??????
_________________________________________________________________
block1_conv2?(Conv2D)????????(None,?150,?150,?64)??????36928?????
_________________________________________________________________
block1_pool?(MaxPooling2D)???(None,?75,?75,?64)????????0?????????
_________________________________________________________________
block2_conv1?(Conv2D)????????(None,?75,?75,?128)???????73856?????
_________________________________________________________________
block2_conv2?(Conv2D)????????(None,?75,?75,?128)???????147584????
_________________________________________________________________
block2_pool?(MaxPooling2D)???(None,?37,?37,?128)???????0?????????
_________________________________________________________________
block3_conv1?(Conv2D)????????(None,?37,?37,?256)???????295168????
_________________________________________________________________
block3_conv2?(Conv2D)????????(None,?37,?37,?256)???????590080????
_________________________________________________________________
block3_conv3?(Conv2D)????????(None,?37,?37,?256)???????590080????
_________________________________________________________________
block3_pool?(MaxPooling2D)???(None,?18,?18,?256)???????0?????????
_________________________________________________________________
block4_conv1?(Conv2D)????????(None,?18,?18,?512)???????1180160???
_________________________________________________________________
block4_conv2?(Conv2D)????????(None,?18,?18,?512)???????2359808???
_________________________________________________________________
block4_conv3?(Conv2D)????????(None,?18,?18,?512)???????2359808???
_________________________________________________________________
block4_pool?(MaxPooling2D)???(None,?9,?9,?512)?????????0?????????
_________________________________________________________________
block5_conv1?(Conv2D)????????(None,?9,?9,?512)?????????2359808???
_________________________________________________________________
block5_conv2?(Conv2D)????????(None,?9,?9,?512)?????????2359808???
_________________________________________________________________
block5_conv3?(Conv2D)????????(None,?9,?9,?512)?????????2359808???
_________________________________________________________________
block5_pool?(MaxPooling2D)???(None,?4,?4,?512)?????????0?????????
=================================================================
?
下面是轉載的內容:
先說一下我對神經網絡的理解:神經網絡就是用巨量的簡單的非線性函數組合起來擬合復雜的未知函數。比如,人類識別不同的物體、識別不同動物、不同植物是個復雜的未知函數。雖然未知,但沒事,我們的神經網絡可以用巨量的簡單非線性函數組合來擬合出來。而且實踐證明在很多場景下效果非常好。而如何確定這些巨量的簡單非線性函數的大量參數呢?通過機器學習,機器訓練。
著名的卷積神經網絡VGG16,論文上寫參數有1.3億個,查了很多文章,很多都是錯的,有些對的,但是沒有解釋為什么這樣算,意義是啥。
最近發現難以理解的原因是對卷積的誤解。網上幾乎所有講卷積網絡的文章,演示卷積的時候都是一個n×n的表。其實神經網絡里的卷積核是立體的三維卷積核,而卷積過程也是3維卷積。
雖然vgg輸入是一個224×224的圖片,但是考慮到圖片的色彩,那么輸入就是一個224×224×3的3維矩陣。所以卷積核也是三維的才匹配。考慮到每一層有多個卷積核,那就是再加一維,所以每一層其實一個4維矩陣來運算處理輸入的3維矩陣。
下面計算vgg16的參數:
計算里:乘法里前面3個數字是三維的卷積核的尺寸,乘法項最后一個數字是這一層的卷積核數量,加法項是偏置參數數量
第1層:1792 =3*3*3*64+64;
第1層: 1792 =3*3*3*64+64;前面的3*3*3是三維的卷積核,64是這一層的卷積核數量,最后的是偏置參數數量
第2層: 36928? ? =3*3*64*64+64
第3層: 73856? ? =3*3*64*128+128
第4層: 147584? =3*3*128*128+128
第5層: 295168? =3*3*128*256+256
第6層: 590080? =3*3*256*256+256
第7層: 590080? =3*3*256*256+256
第8層: 1180160? =3*3*256*512+512
第9層: 2359808? =3*3*512*512+512
第10層:2359808? =3*3*512*512+512
第11層:2359808? =3*3*512*512+512
第12層:2359808? =3*3*512*512+512
第13層:2359808? =3*3*512*512+512
第14層:102764544=7*7*512*4096+4096
第15層:16781312 =4096*4096+4096
第16層:4097000? =4096*1000+1000
總計:138357544個
?
總結
以上是生活随笔為你收集整理的卷积神经网络VGG16权重数量的计算和理解(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习没有GPU怎么办?
- 下一篇: 聚焦和增强卷积神经网络