構建卷積層時,你要決定卷積核的大小究竟是 1×1,3×3 還 是 5×5,或者要不要添加池化層。而 Inception 網絡的作用就是代替你來決定,雖然網絡架
構因此變得更加複雜,但網絡表現卻非常好.
1.Inception基本思想:
同時添加多個濾波器,將每個濾波器輸出疊加一起,作爲總輸出,讓網絡自己學習它需要什麼樣的參數,採用哪些過濾器組合。
注:多個濾波器輸出的維度應該相同;比如MAX-POOL採取特殊的池化層,保證輸出維度28x28
缺點:顯而易見,Inceptin網絡計算量非常龐大;
以5x5卷積核爲例:
由上圖知,大概有1.2億參數
2.使用 1×1 卷積來構建瓶頸層,從而大大降低計算成本
添加用1x1卷積層,即"瓶頸層";
瓶頸通常是某個對象最小的部分,瓶頸層也是網絡中最小的部分,我們先縮小網絡表示,然後再擴大它。
參數量12.4M, 下降爲原來的十分之一。
事實證明,只要合理構建瓶頸層,既可以顯著縮小表示層規模,又不會降低網絡性能,從而節省了計算。
3.googleLeNet
https://arxiv.org/pdf/1409.4842.pdf
一個典型的Inception module
注意:池化層後加一個1x1卷積改變信道數量;
Inception網絡,就是在不同位置,重複使用Inception模塊組成。
由論文原文可知,還添加了一些分支,在網絡最後基層,通常稱爲全連接層,之後再鏈接一個softmax層做預測;
這些分支,應該看着Inception網絡的一個細節,確保了即便是隱藏單元和中間層也參與了特徵計算,它們也能預測圖片分類,也參與了特徵計算,它們能預測圖片的分類。
在 Inception網絡中,起到一種調整的效果,並且能防止網絡發生過擬合。
還有這個特別的Inception網絡是由Google公司的作者所研發的,它被叫做GoogleLeNet,這個名字是爲了向 LeNet 網絡致敬。在之前的視頻中你應該瞭解了 LeNet 網絡。
最後,有個有趣的事實,Inception 網絡這個名字又是緣何而來呢?Inception 的論文特地提到了這個meme,網絡用語即“梗”,就是“我們需要走的更深”(We need to go deeper),
論文還引用了這個網址(http://knowyourmeme.com/memes/we-need-to-go-deeper),
連接到這幅圖片上,
如果你看過 Inception(盜夢空間)這個電影,你應該能看懂這個由來。
作者其實是通過它來表明了建立更深的神經網絡的決心,他們正是這樣構建了 Inception。
4.GoogLeNet/Inception in Keras
from keras.applications.inception_v3 import InceptionV3
model = InceptionV3(weights='imagenet', include_top=False)