都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇
導讀
本篇文章主要介紹CNN中常見的填充方式Padding,Padding在CNN中用的很多,是CNN必不可少的組成部分,使用Padding的目的主要是為了調整輸出的大小,是必須搞清楚的知識點。如果你想繼續(xù)了解深度學習,那么請看下去吧!
目前深度學習系列已經更新了6篇文章,分別是激活函數篇、卷積篇、損失函數篇、下采樣篇、評估指標篇,另有1篇保姆級入門教程,1篇總結性文章CNN中十大令人拍案叫絕的操作,想要入門深度學習的同學不容錯過!
一、Padding介紹
1.1 什么是Padding
在進行卷積層的處理之前,有時要向輸入數據的周圍填入固定的數據(比如0、1等),這稱為填充(padding),是卷積運算中經常會用到的處理。例如,向下列tensor中使用幅度為1像素為0的填充。
 
 虛線部分表示是填充的數據,這里省略了填充的內容0。
1.2 為什么要使用Padding
- 1.使用填充主要是為了調整輸出的大小。比如,對大小為(4, 4)的輸入數據應用(3, 3)的濾波器時,輸出大小變?yōu)?2, 2),相當于輸出大小比輸入大小縮小了 2個元素。這在反復進行多次卷積運算的深度網絡中會成為問題。為什么呢?因為如果每次進行卷積運算都會縮小空間,那么在某個時刻輸出大小就有可能變?yōu)?1,導致無法再應用卷積運算。為了避免出現這樣的情況,就要使用填充。在剛才的例子中,將填充的幅度設為 1,那么相對于輸入大小(4, 4),輸出大小也保持為原來的(4, 4)。因此,卷積運算就可以在保持空間大小不變的情況下將數據傳給下一層。
 - 2.越是邊緣的像素點,對于輸出的影響越小,因為卷積運算在移動的時候到邊緣就結束了。中間的像素點有可能會參與多次計算,但是邊緣像素點可能只參與一次。所以結果可能會丟失邊緣信息。使用Padding可以在一定程度上保留邊界信息。
 
二、常見的Padding方式
這里我會以圖示的方式盡量將每種填充方式都闡述清楚,CNN中用到的填充方式無非就是下面的四種,最常用的是填0的Padding,另鏡面Padding在Unet論文中使用過,感興趣的同學可以自行下載去閱讀!
Unet:Unet論文鏈接
 
2.1 填0Padding
原tensor:
[[-0.1678, -0.4418, 1.9466],[ 0.9604, -0.4219, -0.5241],[-0.9162, -0.5436, -0.6446]]經過Padding(幅度為2,填充為0)后:
[[ 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],[ 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],[ 0.0000, 0.0000, -0.1678, -0.4418, 1.9466, 0.0000, 0.0000],[ 0.0000, 0.0000, 0.9604, -0.4219, -0.5241, 0.0000, 0.0000],[ 0.0000, 0.0000, -0.9162, -0.5436, -0.6446, 0.0000, 0.0000],[ 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],[ 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]]2.2 鏡面Padding
原始tensor:
[[0., 1., 2.], [3., 4., 5.], [6., 7., 8.]]經過鏡面Padding之后:
[[8., 7., 6., 7., 8., 7., 6.],[5., 4., 3., 4., 5., 4., 3.],[2., 1., 0., 1., 2., 1., 0.],[5., 4., 3., 4., 5., 4., 3.],[8., 7., 6., 7., 8., 7., 6.],[5., 4., 3., 4., 5., 4., 3.],[2., 1., 0., 1., 2., 1., 0.]]通俗解釋一下鏡面Padding是如何實現的,其實原理也很簡單,跟初中物理學過的鏡面反射原理是一樣的,分別以原始tensor的四條邊為鏡面,然后進行反射,即可得到鏡面Padding之后的tensor了。
2.3 填連續(xù)值Padding
原始tensor:
[[ 1.6585, 0.4320],[-0.8701, -0.4649]]經過Padding(幅度為2,填充為3.5)之后,變?yōu)橄铝兴镜膖ensor:
[[ 3.5000, 3.5000, 3.5000, 3.5000, 3.5000, 3.5000],[ 3.5000, 3.5000, 3.5000, 3.5000, 3.5000, 3.5000],[ 3.5000, 3.5000, 1.6585, 0.4320, 3.5000, 3.5000],[ 3.5000, 3.5000, -0.8701, -0.4649, 3.5000, 3.5000],[ 3.5000, 3.5000, 3.5000, 3.5000, 3.5000, 3.5000],[ 3.5000, 3.5000, 3.5000, 3.5000, 3.5000, 3.5000]]2.4 使用輸入tensor的邊緣Padding
原始tensor:
[[0., 1., 2.],[3., 4., 5.],[6., 7., 8.]]經過Padding(幅度為2)后的tensor:
[[0., 0., 0., 1., 2., 2., 2.],[0., 0., 0., 1., 2., 2., 2.],[0., 0., 0., 1., 2., 2., 2.],[3., 3., 3., 4., 5., 5., 5.],[6., 6., 6., 7., 8., 8., 8.],[6., 6., 6., 7., 8., 8., 8.],[6., 6., 6., 7., 8., 8., 8.]]文章持續(xù)更新,可以關注微信公眾號【醫(yī)學圖像人工智能實戰(zhàn)營】獲取最新動態(tài),一個專注于醫(yī)學圖像處理領域前沿科技的公眾號。堅持以實踐為主,手把手帶你做項目,打比賽,寫論文。凡原創(chuàng)文章皆提供理論講解,實驗代碼,實驗數據。更有上百部深度學習入門資料免費等你來拿,只有實踐才能成長的更快,關注我們,一起學習進步~
計劃
深度學習保姆級入門教程 – 論文+代碼+常用工具
 1個字,絕! – CNN中十大令人拍案叫絕的操作
 都2021年了,不會還有人連深度學習還不了解吧?(一)-- 激活函數篇
 都2021年了,不會還有人連深度學習還不了解吧?(二)-- 卷積篇
 都2021年了,不會還有人連深度學習還不了解吧?(三)-- 損失函數篇
 都2021年了,不會還有人連深度學習還不了解吧?(四)-- 上采樣篇
 都2021年了,不會還有人連深度學習還不了解吧?(五)-- 下采樣篇
 都2021年了,不會還有人連深度學習還不了解吧?(六)-- Padding篇
 都2021年了,不會還有人連深度學習還不了解吧?(七)-- 評估指標篇
 都2021年了,不會還有人連深度學習還不了解吧?(八)-- 優(yōu)化算法篇
 都2021年了,不會還有人連深度學習還不了解吧?(九)-- 注意力機制篇
 都2021年了,不會還有人連深度學習還不了解吧?(十)-- 數據歸一化篇
覺得寫的不錯的話,歡迎點贊+評論+收藏,歡迎關注我的微信公眾號,這對我?guī)椭娴暮艽蠛艽蠛艽?#xff01;
 
總結
以上是生活随笔為你收集整理的都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 2021新职业教育行业发展研究报告
 - 下一篇: 面试题,如何改进一款产品