轉載 http://www.cnblogs.com/objectDetect/p/5947169.html
今天在設計CNN基於手寫數字識別模型時,看到感受野這個名詞,以下是我感覺比較清洗直白的講解
1 感受野的概念
從直觀上講,感受野就是視覺感受區域的大小。在卷積神經網絡中,感受野的定義是 卷積神經網絡每一層輸出的特徵圖(feature map)上的像素點在原始圖像上映射的區域大小。
2 感受野大小的計算
感受野計算時有下面的幾個情況需要說明:
a)第一層卷積層的輸出特徵圖像素的感受野的大小等於濾波器的大小;
b)深層卷積層的感受野大小和它之前所有層的濾波器大小和步長有關係;
c)計算感受野大小時,忽略了圖像邊緣的影響,即不考慮padding的大小。
此外,關於每一層的strides的說明,這個strides是之前所有層stride的乘積,即
strides(i)= stride(1) * stride(2) * ...* stride(i-1)
對於單層卷積網絡,其feature map上每個特徵點對應原圖上的感受野大小等於卷積層濾波器的大小;對於多層卷積網絡,可由此逐層往回反饋,通過反覆迭代獲得原始輸入圖像中感受野大小,即後面深層的卷積層感受野大小就和之前所有網絡層的濾波器大小和步長有關係了,在計算的時候,忽略圖像Padding的大小。使用的公式可以表示如下:
r(i) = (r(i+1) - 1) * stride(i) + c(i)
其中, r(i)表示第i層感受野大小,stride(i)表示第i層步長,c(i)表示第i層卷積核大小。
此外,對於卷積網絡中的激活函數層(ReLU/Sigmoid/...)等,感受野迭代公式爲:
r(i)=r(i+1)