Filter Concatenation理解

轉載自:https://blog.csdn.net/qq_28132591/article/details/64124491

學習深度學習,有幾篇論文大多數人都會讀到。

其中一篇就是《Going deeper with convolutions》,google在這片論文中提到了一個inception模型(示意版,簡單模式):


對於我這種基礎知識不牢靠,學習時間非常短的人來說,對深度神經網絡的理解還沒到位,經常看論文一知半解,很多概念搞不清楚。

看到上面這個圖,我就產生了一個疑問:

上圖中的Filter Concatenation是怎麼工作的,明明下面是三個不同大小的核卷積出來的,難道有個Filter Concatenation操作可以把不同大小的圖混合在一起?

首先這是我的第一個誤解,估計只有很少人會有:

就是在沒有特殊說明的情況下卷積後的圖像大小隻和步長有關和卷積核大小無關,卷積核如果超出邊緣會有相應策略填充:


如圖 上面超出的部分可以用0或者1,8,15填充, 主要看具體策略。

回過頭來看inception模型(改進版,最下面的MaxPool是輸入,不屬於模型內):


(S)前面的就是步長可以看到中間兩層的步長都是1,所以混合的時候4條線路的結果出來的圖大小是一樣的,就沒有所謂的Filter Concatenation需要混合不同大小的圖這一說。


回到Filter Concatenation具體是怎麼操作的,其實很簡單 就是把圖按深度鏈接起來,tensorflow代碼如下:


concatenated_tensor = tf.concat(3, [branch1, branch2, branch3, branch4])

打個比方3個10x10x3的圖按照深度連接起來就會變成一個10x10x9的圖,所以Filter Concatenation就這麼簡單,把幾個圖連成一個而已


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