先說一下我對神經(jīng)網(wǎng)絡(luò)的理解:神經(jīng)網(wǎng)絡(luò)就是用巨量的簡單的非線性函數(shù)組合起來擬合復(fù)雜的未知函數(shù)。比如抠刺,人類識別不同的物體塔淤、識別不同動物、不同植物是個復(fù)雜的未知函數(shù)速妖。雖然未知凯沪,但沒事,我們的神經(jīng)網(wǎng)絡(luò)可以用巨量的簡單非線性函數(shù)組合來擬合出來买优。而且實(shí)踐證明在很多場景下效果非常好。而如何確定這些巨量的簡單非線性函數(shù)的大量參數(shù)呢挺举?通過機(jī)器學(xué)習(xí)杀赢,機(jī)器訓(xùn)練。
著名的卷積神經(jīng)網(wǎng)絡(luò)VGG16湘纵,論文上寫參數(shù)有1.3億個脂崔,查了很多文章,很多都是錯的梧喷,有些對的砌左,但是沒有解釋為什么這樣算,意義是啥铺敌。
最近發(fā)現(xiàn)難以理解的原因是對卷積的誤解汇歹。網(wǎng)上幾乎所有講卷積網(wǎng)絡(luò)的文章,演示卷積的時候都是一個n×n的表偿凭。其實(shí)神經(jīng)網(wǎng)絡(luò)里的卷積核是立體的三維卷積核产弹,而卷積過程也是3維卷積。
雖然vgg輸入是一個224×224的圖片弯囊,但是考慮到圖片的色彩痰哨,那么輸入就是一個224×224×3的3維矩陣。所以卷積核也是三維的才匹配匾嘱〗锔考慮到每一層有多個卷積核,那就是再加一維霎烙,所以每一層其實(shí)一個4維矩陣來運(yùn)算處理輸入的3維矩陣撬讽。
下面計(jì)算vgg16的參數(shù):
計(jì)算里:乘法里前面3個數(shù)字是三維的卷積核的尺寸蕊连,乘法項(xiàng)最后一個數(shù)字是這一層的卷積核數(shù)量,加法項(xiàng)是偏置參數(shù)數(shù)量
第1層: =3*3*3*64+64锐秦;
第1層: 1792 =3*3*3*64+64咪奖;前面的3*3*3是三維的卷積核,64是這一層的卷積核數(shù)量酱床,最后的是偏置參數(shù)數(shù)量
第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
總計(jì):138357544個