1.5 卷积步长-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
| 1.4 Padding | 回到目錄 | 1.6 三維卷積 |
卷積步長 (Strided Convolutions)
卷積中的步幅是另一個構建卷積神經網(wǎng)絡的基本操作,讓我向你展示一個例子。
如果你想用3×3的過濾器卷積這個7×7的圖像,和之前不同的是,我們把步幅設置成了2。你還和之前一樣取左上方的3×3區(qū)域的元素的乘積,再加起來,最后結果為91。
只是之前我們移動藍框的步長是1,現(xiàn)在移動的步長是2,我們讓過濾器跳過2個步長,注意一下左上角,這個點移動到其后兩格的點,跳過了一個位置。然后你還是將每個元素相乘并求和,你將會得到的結果是100。
現(xiàn)在我們繼續(xù),將藍色框移動兩個步長,你將會得到83的結果。當你移動到下一行的時候,你也是使用步長2而不是步長1,所以我們將藍色框移動到這里:
注意到我們跳過了一個位置,得到69的結果,現(xiàn)在你繼續(xù)移動兩個步長,會得到91,127,最后一行分別是44,72,74。
所以在這個例子中,我們用3×3的矩陣卷積一個7×7的矩陣,得到一個3×3的輸出。輸入和輸出的維度是由下面的公式決定的。如果你用一個 f?ff*ff?f 的過濾器卷積一個 n?nn*nn?n 的圖像,你的padding為 ppp ,步幅為 sss ,在這個例子中 s=2s=2s=2 ,你會得到一個輸出,因為現(xiàn)在你不是一次移動一個步子,而是一次移動 sss 個步子,輸出于是變?yōu)?n+2p?fs+1?n+2p?fs+1\frac{n+2p-f}{s}+1*\frac{n+2p-f}{s}+1sn+2p?f?+1?sn+2p?f?+1
在我們的這個例子里, n=7,p=0,f=3,s=2,7+0?32+1=3n=7,p=0,f=3,s=2,\frac{7+0-3}{2}+1=3n=7,p=0,f=3,s=2,27+0?3?+1=3 ,即3×3的輸出。
現(xiàn)在只剩下最后的一個細節(jié)了,如果商不是一個整數(shù)怎么辦?在這種情況下,我們向下取整。 ??\lfloor\rfloor?? 這是向下取整的符號,這也叫做對 zzz 進行地板除(floor),這意味著 zzz 向下取整到最近的整數(shù)。這個原則實現(xiàn)的方式是,你只在藍框完全包括在圖像或填充完的圖像內部時,才對它進行運算。如果有任意一個藍框移動到了外面,那你就不要進行相乘操作,這是一個慣例。你的3×3的過濾器必須完全處于圖像中或者填充之后的圖像區(qū)域內才輸出相應結果,這就是慣例。因此正確計算輸出維度的方法是向下取整,以免 n+2p?fs\frac{n+2p-f}{s}sn+2p?f? 不是整數(shù)。
總結一下維度情況,如果你有一個 n?nn*nn?n 的矩陣或者 n?nn*nn?n 的圖像,與一個 f?ff*ff?f 的矩陣卷積,或者說 f?ff*ff?f 的過濾器。Padding是 ppp ,步幅為 sss 沒輸出尺寸就是這樣:
可以選擇所有的數(shù)使結果是整數(shù)是挺不錯的,盡管一些時候,你不必這樣做,只要向下取整也就可以了。你也可以自己選擇一些 nnn , fff ,ppp 和 sss 的值來驗證這個輸出尺寸的公式是對的。
在講下一部分之前,這里有一個關于互相關和卷積的技術性建議,這不會影響到你構建卷積神經網(wǎng)絡的方式,但取決于你讀的是數(shù)學教材還是信號處理教材,在不同的教材里符號可能不一致。如果你看的是一本典型的數(shù)學教科書,那么卷積的定義是做元素乘積求和,實際上還有一個步驟是你首先要做的,也就是在把這個6×6的矩陣和3×3的過濾器卷積之前,首先你將3×3的過濾器沿水平和垂直軸翻轉,所以 [345102?197]\left[\begin{matrix} 3&4&5\\ 1&0&2\\ -1&9&7\\ \end{matrix}\right]???31?1?409?527???? 變?yōu)?[725904?113]\left[\begin{matrix} 7&2&5\\ 9&0&4\\ -1&1&3\\ \end{matrix}\right]???79?1?201?543???? ,這相當于將3×3的過濾器做了個鏡像,在水平和垂直軸上(整理者注:此處應該是先順時針旋轉90得到 [?113904725]\left[\begin{matrix} -1&1&3\\ 9&0&4\\ 7&2&5\\ \end{matrix}\right]????197?102?345???? ,再水平翻轉得到 [725904?113]\left[\begin{matrix} 7&2&5\\ 9&0&4\\ -1&1&3\\ \end{matrix}\right]???79?1?201?543???? )。然后你再把這個翻轉后的矩陣復制到這里(左邊的圖像矩陣),你要把這個翻轉矩陣的元素相乘來計算輸出的4×4矩陣左上角的元素,如圖所示。然后取這9個數(shù)字,把它們平移一個位置,再平移一格,以此類推。
所以我們在這些視頻中定義卷積運算時,我們跳過了這個鏡像操作。從技術上講,我們實際上做的,我們在前面視頻中使用的操作,有時被稱為互相關(cross-correlation)而不是卷積(convolution)。但在深度學習文獻中,按照慣例,我們將這(不進行翻轉操作)叫做卷積操作。
總結來說,按照機器學習的慣例,我們通常不進行翻轉操作。從技術上說,這個操作可能叫做互相關更好。但在大部分的深度學習文獻中都把它叫做卷積運算,因此我們將在這些視頻中使用這個約定。如果你讀了很多機器學習文獻的話,你會發(fā)現(xiàn)許多人都把它叫做卷積運算,不需要用到這些翻轉。
事實證明在信號處理中或某些數(shù)學分支中,在卷積的定義包含翻轉,使得卷積運算符擁有這個性質,即 (A?B)?C=A?(B?C)(A*B)*C=A*(B*C)(A?B)?C=A?(B?C) ,這在數(shù)學中被稱為結合律。這對于一些信號處理應用來說很好,但對于深度神經網(wǎng)絡來說它真的不重要,因此省略了這個雙重鏡像操作,就簡化了代碼,并使神經網(wǎng)絡也能正常工作。
根據(jù)慣例,我們大多數(shù)人都叫它卷積,盡管數(shù)學家們更喜歡稱之為互相關,但這不會影響到你在編程練習中要實現(xiàn)的任何東西,也不會影響你閱讀和理解深度學習文獻。
現(xiàn)在你已經看到了如何進行卷積,以及如何使用填充,如何在卷積中選擇步幅。但到目前為止,我們所使用的是關于矩陣的卷積,例如6×6的矩陣。在下一集視頻中,你將看到如何對立體進行卷積,這將會使你的卷積變得更加強大,讓我們繼續(xù)下一個視頻。
課程板書
| 1.4 Padding | 回到目錄 | 1.6 三維卷積 |
總結
以上是生活随笔為你收集整理的1.5 卷积步长-深度学习第四课《卷积神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.4 Padding-深度学习第四课《
- 下一篇: 1.6 三维卷积-深度学习第四课《卷积神