1. 程式人生 > >深度學習——感受野

深度學習——感受野

最近在組會講解框架時,在感受野這個小知識點,大家開始產生歧義,今天我就簡單的給大家講解下這個小知識點,也給初學者帶來一個對Receptive Field嶄新的認識,如果對只是有深入瞭解的你,就可以直接跳過O(∩_∩)O~~!
現在開始進入正題!!!

以前我的理解就是,感受野嘛,其實那就是一個視覺感受區域大小。對於單層網路來說,下一層的一個畫素點其感受野大小也就是卷積層濾波器的大小,想想其實很明瞭的就理解了,但對於多層,那就有一點點(也就那麼一點點複雜而已)!

正式定義:

在神經網路中,感受野的定義是:
卷積神經網路的每一層輸出的特徵圖(Feature ap)上的畫素點在原影象上對映的區域大小。
這裡寫圖片描述

自己隨便畫了一個例圖,主要看內容,O(∩_∩)O謝謝!
連結: http://pan.baidu.com/s/1nvMzrOP 密碼: 2ehd
有讀者說有動圖就好了,我就截取了一個,請大家欣賞!

這裡寫圖片描述

現在就開始來說怎麼計算吧!(看點來了)其實很簡單!
首先可以簡單知道(前面也提及到了),第一層卷積層的輸出特徵影象素的感受野的大小就等於等於卷積層濾波器的大小;然後其繼續進行前向傳播,這樣的話,後面深層的卷積層感受野大小就和之前所有網路層的濾波器大小和步長有關係了,在計算的時候,忽略影象Padding的大小。網路中的每一個層有一個strides,該strides是之前所有層stride的乘積,即:
這裡寫圖片描述

查資料知,感受野大小的計算採用從深層到前層的方式計算, 即先計算最深層在前一層上的感受野,然後逐漸反饋到第一層,公式具體記如下:
這裡寫圖片描述
其中V^{‘} {receptive field} 為得的感受野大小, V{receptive field} 為最後層在前一層的感受野大小,Size_{Conv} 為卷積層濾波器大小。

通過這樣反覆迭代就可以得到每一層的感受野。具體程式碼我看網上也有,我就順便附一下吧,原件請在連結裡下載,謝謝!
連結: http://pan.baidu.com/s/1jIHLGJc 密碼: ayuc
具體模擬結果我是用Windows版的Python 3.5 (32-bit)執行得到的,具體如下圖:

這裡寫圖片描述