天天看點

轉置卷積和孔洞卷積(擴張卷積)

連結:https://pan.baidu.com/s/15NsS8WtYQiahM6p_z_YBNQ 

提取碼:3q96 

本文對A guide to convolution arithmetic for deep 的第四章部分翻譯,純屬個人學習的。

這一篇是講空洞卷積的:https://www.zhihu.com/question/54149221

膨脹卷積:https://blog.csdn.net/zhangjunhit/article/details/70157920

前面大部分都講的是卷積操作,包括卷積核、步長、pad,(pad表示一個次元左右各補充幾個0,總共是2*pad的補充)

這幾個怎麼影響輸出的size的,公式:

i是原尺寸,p是補充的pad,k是卷積核的長,s是步長,are you ok? 哈哈

轉置卷積和孔洞卷積(擴張卷積)

圖解:

轉置卷積和孔洞卷積(擴張卷積)

下面這個才是重點

轉置卷積和孔洞卷積(擴張卷積)
轉置卷積和孔洞卷積(擴張卷積)

基本意思就是,有一個輸入4*4的圖檔,暫定為一個通道,然後flattened拉平成一行,shape是(16,)用X表示,然後将3*3的卷積核表達成一個稀疏矩陣C,其中的值沒有變化。原矩陣:

[[w00,w01,w02],

[w10,w11,w12],

[w20,w21,w22]

]

稀疏矩陣C:

轉置卷積和孔洞卷積(擴張卷積)

然後是CX=result,再reshape成2*2,注意圖2.1。這樣結果與正常卷積是一樣的。

在反向傳播時用的就是CT(C的轉置),很容易得到。

轉置卷積——也稱為分階躍卷積或反卷積-通過交換卷積的正向和反向傳遞來實作。一種方法是注意到核函數定義了卷積,但是

它是直接卷積還是轉置卷積是由如何計算向前和向後傳遞。

For instance, although the kernel w defines a convolution whose forward and backward passes are computed by multiplying with C and CT respectively, it also defines a transposed convolution whose forward and backward passes are computed by multiplying with CT and (CT ) T = C respectively.

例如,雖然核w定義了一個卷積,它的前向傳播和反向傳播通過C或者CT乘計算,還定義了一個轉置卷積,它的前向和反向傳播是用CT和(CT)T的乘計算。

Finally note that it is always possible to emulate a transposed convolution with a direct convolution.The disadvantage is that it usually involves adding many columns and rows of zeros to the input, resulting in a much less efficient implementation

最後請注意,總是可以通過用直接卷積模拟一個轉置卷積。缺點是,它通常需要在輸入中添加許多列和行0,導緻實作效率大大降低.(也就說作者不贊成正向卷積操作,轉置卷積操作高效)

直接卷積模拟轉置卷積:C.T × result = X (大家可以推推次元),

對于X[0] = 

轉置卷積和孔洞卷積(擴張卷積)

*result[0] + 0*result[1] + 0*result[2] + 0*result[3]

轉置卷積和孔洞卷積(擴張卷積)

轉置卷積也稱為分階躍卷積或反卷積( fractionally strided convolutions or deconvolutions),其工作原理是交換卷積的正反向傳遞。一種方法是注意到核函數定義了卷積,但是它是直接卷積還是轉置卷積是由計算正向和反向傳遞的方式決定的。

考慮對給定輸入的用轉置卷積的最簡單的方法是:

       把輸入想象成直接卷積的結果-特征圖。是以,轉置卷積可以被認為是允許恢複此初始特征映射的形狀的操作。

下面的圖表示:

        一種可以認為對2*2的恢複成了4*4的,先填充pad=2,然後用3*3卷積核,得到4*4的特征圖;

        一種認為對4*4的做了轉置卷積操作,得到2*2特征圖。(高效  )

轉置卷積和孔洞卷積(擴張卷積)

最後這幾個,我還沒看懂,暫時放圖上來

轉置卷積和孔洞卷積(擴張卷積)

5.1 孔卷積

膨脹卷積通過在核心元素之間插入空格使核心膨脹。膨脹率由一個額外的超參數d來控制。實作可能不同,但通常在核心元素之間插入d-1空格,使d = 1對應于一個正則卷積。 

擴充卷積用于在不增加核心大小的情況下廉價地增加輸出單元的感受野,當多個擴充卷積一個接一個疊加時,這種方法尤其有效。具體例子見Oord等人(2016),其中提出的WaveNet模型實作了原始音頻的自回歸生成模型,該模型使用擴充卷積在過去音頻幀的大上下文中設定新的音頻幀。

為了了解膨脹率d與輸出大小o之間的關系,考慮d對有效核心大小的影響是很有用的。大小為k的核被因子d膨脹後具有有效大小:

轉置卷積和孔洞卷積(擴張卷積)

形成膨脹卷積的關系如下:

轉置卷積和孔洞卷積(擴張卷積)
轉置卷積和孔洞卷積(擴張卷積)

繼續閱讀