Pytorch中膨脹卷積的用法詳解
卷積和膨脹卷積
在深度學(xué)習(xí)中,我們會(huì)碰到卷積的概念,我們知道卷積簡單來理解就是累乘和累加,普通的卷積我們?cè)诖瞬蛔鲑樖?,大家可以翻看相關(guān)書籍很好的理解。
最近在做項(xiàng)目過程中,碰到Pytorch中使用膨脹卷積的情況,想要的輸入輸出是圖像經(jīng)過四層膨脹卷積后圖像的寬高尺寸不發(fā)生變化。
開始我的思路是padding='SAME'結(jié)合strides=1來實(shí)現(xiàn)輸入輸出尺寸不變,試列好多次還是有問題,報(bào)了張量錯(cuò)誤的提示,想了好久也沒找到解決方法,上網(wǎng)搜了下,有些人的博客說經(jīng)過膨脹卷積之后圖像的尺寸不發(fā)生變化,有些人又說發(fā)生變化,甚至還給出了公式,按著他們的方法修改后還是有問題,報(bào)的錯(cuò)誤還是沒有變。一時(shí)不知道怎樣解決,網(wǎng)上關(guān)于膨脹卷積輸出尺寸的大小相關(guān)的知識(shí)也很少。
終于......,經(jīng)過自己的研究,發(fā)現(xiàn)了問題所在。好啦!我們先從膨脹卷積的概念開始。
1、膨脹卷積的概念
Dilated Convolutions,翻譯為擴(kuò)張卷積或空洞卷積。擴(kuò)張卷積與普通的卷積相比,除了卷積核的大小以外,還有一個(gè)擴(kuò)張率(dilation rate)參數(shù),主要用來表示擴(kuò)張的大小。擴(kuò)張卷積與普通卷積的相同點(diǎn)在于,卷積核的大小是一樣的,在神經(jīng)網(wǎng)絡(luò)中即參數(shù)數(shù)量不變,區(qū)別在于擴(kuò)張卷積具有更大的感受野。感受野是卷積核在圖像上看到的大小,例如5x5的卷積核的感受野大小為25。
2、示意圖
a.普通卷積,dilation=1,感受野為3x3=9
b.膨脹卷積,dilation=2,感受野為7x7=49
c.膨脹卷積,dilation=4,感受野為16x16 = 256
3、感受野的概念
在卷積神經(jīng)網(wǎng)絡(luò)中,感受野的定義是 卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖(feature map)上的像素點(diǎn)在原始圖像上映射的區(qū)域大小
重點(diǎn)來啦
卷積核經(jīng)過膨脹后實(shí)際參與運(yùn)算的卷積大小計(jì)算公式:
膨脹后的卷積核尺寸 = 膨脹系數(shù) × (原始卷積核尺寸-1)+ 1
例如對(duì)于輸入是19 x 19(暫且不考慮圖像通道數(shù))大小的圖像做膨脹卷積,要使輸出的圖像大小保持不變,即就是仍然為19 x 19,我們要怎樣實(shí)現(xiàn)呢?
我們的代碼是基于pytorch實(shí)現(xiàn)的,它的卷積參數(shù)中沒有padding='SAME‘的選項(xiàng),padding的可取值為0,1,2,3等等的值。它的計(jì)算方式和tensorflow中的padding='VALID'的計(jì)算方式一樣。
Output=(W-F+2P)/S+1
我們?nèi)trides=1,這里的原始卷積核為3 x 3大小,dilation=6,我們可以計(jì)算出膨脹后的卷積核大小為6(3-1)+1=13
帶入公式可以求得:
(19-13+2*p)/1+1=19,要使這個(gè)式子成立,可以反推出padding=6。
這樣一來,就可以使得輸入輸出的尺寸保持不變。達(dá)到了我們想要的效果。
4、膨脹卷積的優(yōu)點(diǎn)
膨脹卷積在保持參數(shù)個(gè)數(shù)不變的情況下增大了卷積核的感受野
5、應(yīng)用領(lǐng)域
圖像修復(fù),圖像分割,語音合成。
以上這篇Pytorch中膨脹卷積的用法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python和C++實(shí)現(xiàn)刪除鏈表的節(jié)點(diǎn)
這篇文章主要介紹了基于Python和C++實(shí)現(xiàn)刪除鏈表的節(jié)點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Python如何在windows環(huán)境安裝pip及rarfile
這篇文章主要介紹了Python如何在windows環(huán)境安裝pip及rarfile,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06pytorch中圖像的數(shù)據(jù)格式實(shí)例
今天小編就為大家分享一篇pytorch中圖像的數(shù)據(jù)格式實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python實(shí)現(xiàn)隨機(jī)從圖像中獲取多個(gè)patch
經(jīng)常有一些圖像任務(wù)需要從一張大圖中截取固定大小的patch來進(jìn)行訓(xùn)練。本文就來和大家聊聊如何用Python實(shí)現(xiàn)隨機(jī)從圖像中獲取多個(gè)patch,感興趣的可以了解一下2022-08-08python中l(wèi)ambda函數(shù) list comprehension 和 zip函數(shù)使用指南
這篇文章主要介紹了python中l(wèi)ambda函數(shù) list comprehension 和 zip函數(shù)使用方法,非常的實(shí)用,有需要的朋友可以參考下2014-09-09python深度學(xué)習(xí)TensorFlow神經(jīng)網(wǎng)絡(luò)模型的保存和讀取
這篇文章主要為大家介紹了python深度學(xué)習(xí)TensorFlow神經(jīng)網(wǎng)絡(luò)如何將訓(xùn)練得到的模型保存下來方便下次直接使用。為了讓訓(xùn)練結(jié)果可以復(fù)用,需要將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型持久化2021-11-11