47.2 轉(zhuǎn)置卷積是一種卷積【動手學(xué)深度學(xué)習(xí)v2】

再談轉(zhuǎn)置卷積
轉(zhuǎn)置卷積
轉(zhuǎn)置卷積是一種卷積
- 轉(zhuǎn)置卷積將輸入和核進(jìn)行了重新排列
- 卷積一般是做下采樣,將高寬變得更??;轉(zhuǎn)置卷積通常用作上采樣,將輸入的高寬變大
- 如果卷積將輸入 (h,w) 變成了 (h’,w‘),使用同樣超參數(shù)的轉(zhuǎn)置卷積將輸入從 (h’,w‘) 變成了 (h,w) ,可以認(rèn)為在超參數(shù)相同的情況下,從形狀上轉(zhuǎn)置卷積和卷積互為逆變換
重新排列輸入和核
1、當(dāng)填充為 0 ,步幅為 1 時(shí)
- 如果想要變成卷積的話,首先將輸入上下左右都填充 k - 1 行或者列( k 是核窗口的大小),下圖中藍(lán)色的區(qū)域是填充的行和列
- 將核矩陣上下、左右翻轉(zhuǎn)
- 然后做正常卷積(填充 0 ,步幅 1),所得到的結(jié)果就等價(jià)于轉(zhuǎn)置卷積的輸出

2、當(dāng)填充為 p (對于卷積來講,加填充就使得輸入或者輸出變大;對于轉(zhuǎn)置卷積來說,加填充會使得輸出變?。?/span>,步幅為 1 時(shí)
- 將輸入填充 k - p - 1 ( k 是核窗口的大小)
- 將核矩陣上下、左右翻轉(zhuǎn)
- 然后做正常卷積(填充 0 ,步幅 1),不管做轉(zhuǎn)置卷積的填充是多少,換算成卷積之后,卷積都是正常卷積(填充為 0 ,步幅為 1 ),和輸入的填充是無關(guān)的
- 下圖所展示的是填充為 1 ,核窗口的大小為 2 的情況

3、當(dāng)填充為 p ,步幅為 s (在卷積的時(shí)候加入步幅會將高寬成倍的減少;對于轉(zhuǎn)置卷積來講,會將高寬持續(xù)增加)時(shí)
- 在行和列之間插入 s - 1 行或列
- 將輸入填充 k - p - 1 ( k 是核窗口的大小)
- 將核矩陣上下、左右翻轉(zhuǎn)
- 然后做正常卷積(填充 0 ,步幅 1)
- 下圖所展示的是填充為 0 ,步幅為 2 ,核窗口的大小為 2 的情況(藍(lán)色區(qū)域中,外圍的一圈是由于填充為 0 導(dǎo)致的,中間的十字是由于步幅為 2 導(dǎo)致的)

形狀換算
假設(shè)輸入高(寬)為 n ,核的大小為 k ,填充為 p ,步幅為 s
- 轉(zhuǎn)置卷積的輸出大小為 n' = sn + k - 2p - s (這里的 p 指的是上填充或者下填充,而沒有將上下填充加起來)
- 如果考慮同樣超參數(shù)的卷積,則卷積的輸出大小為 n' = ?(n - k - 2p + s) / s? (“??” 表示向下取整,所以在 “??” 中的式子不被整除的情況下,n 如果增加一點(diǎn)是不會影響輸出的,所以卷積中的 n 如果增加的話,可能會導(dǎo)致最終的輸出 n’ 不會有所變化) --(可以推出在做逆變換的時(shí)候)--> n >= sn' + k - 2p - s (在 “??” 中的式子能夠被整除的情況下等號成立,即逆變換的輸出和轉(zhuǎn)置卷積輸出的計(jì)算方式相同)
如果想要使用轉(zhuǎn)置卷積讓高寬成倍增加,即 n' = sn ,所以 k - 2p - s ,應(yīng)該等于 0 ,那么 k = 2p + s
- 在全連接卷積神經(jīng)網(wǎng)絡(luò)中 p 如何取值使得高寬增加 32 倍?已知窗口大小是 64 ,步幅為 32 ,由上式可以得到 p 的值為16 ,這就是為什么在 FCN 中 p 的值為 32
同反卷積的關(guān)系
1、數(shù)學(xué)上的反卷積(deconvolution)是指卷積的逆運(yùn)算,類似于傅里葉變換和反傅里葉變換互為逆運(yùn)算
- 若 Y = conv(X,K),則 X = deconv(Y,K)
- 但是轉(zhuǎn)置卷積指的是形狀上是逆運(yùn)算,但是值不是,轉(zhuǎn)置卷積本質(zhì)上還是一種卷積
2、反卷積很少用在深度學(xué)習(xí)中
- 通常所說的反卷積神經(jīng)網(wǎng)絡(luò)指的是用了轉(zhuǎn)置卷積的神經(jīng)網(wǎng)絡(luò),而并不是指的是數(shù)學(xué)上的反卷積
總結(jié)
1、轉(zhuǎn)置卷積本質(zhì)上還是一種卷積,只不過是變化了輸入和核,輸入通常是加入了很多的 0 來得到上采樣(使得輸出的高寬變得更大)的目的,而核是進(jìn)行了翻轉(zhuǎn)
2、轉(zhuǎn)置卷積不等同于數(shù)學(xué)上的反卷積操作,通常所說的反卷積神經(jīng)網(wǎng)絡(luò)實(shí)際上使用的是轉(zhuǎn)置卷積,本質(zhì)上還是一個(gè)卷積神經(jīng)網(wǎng)絡(luò),只是對輸入和核進(jìn)行了變換
----end----
1、《動手學(xué)深度學(xué)習(xí)》,課程安排,https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_15.pdf