轉置卷積 Transposed convolution

來源:互聯網
上載者:User

[重點]轉置卷積的解釋,避免三個誤區: 點擊開啟連結

Y = CX 卷積操作矩陣C定義排列如下:


很多文章都說卷積核的轉置就可以求反卷積,又陷入迷茫“就算把卷積核轉置(或者左右翻轉上下翻轉),卷積後輸出還是越來越小(或不變,至少不會增大)啊”……直到看到文獻和相應的這個動畫(其他動畫在github-convolution arithmetic1)


                   
卷積  i=4,k=3,p=0,s=1,則 o=2 反卷積 i=2,k=3,p=0,s=1,則 o=4


注意圖中藍色(下面)是輸入,綠色(上面)是輸出,卷積和反卷積在 p、s、k 等參數一樣時,是相當於 i 和 o 調了個位。

這裡說明了反卷積的時候,是有補0的,即使人家管這叫  no padding(  p=0)), ,這是因為卷積的時候從藍色 4×4  縮小為綠色 2×2, 所以對應的 p=0   反卷積應該從藍色 2×2 擴充成綠色 4×4。而且轉置並不是指這個 3×3 的核 w 變為 wT,而是值卷積操作矩陣C的轉置。但如果將卷積計算寫成矩陣乘法(在程式中,為了提高卷積操作的效率,就可以這麼幹,比如tensorflow中就是這種實現), Y⃗ =CX⃗ (其中 Y⃗  表示將 Y⃗  拉成一維向量, X⃗  同理),那麼反卷積確實可以表示為 CTY⃗ ,而這樣的矩陣乘法,恰恰等於 w 左右翻轉再上下翻轉後與補0的 Y 卷積的情況。具體看連結部落格





全文: Convolution Arithmetic Tutorial  點擊開啟連結

github上關於卷積與轉置卷積的動態圖   點擊開啟連結

結論: Quick reference

Convolution relationship

A convolution specified by input size , kernel size , stride , padding size ,

has an output size given by

In Theano, this translates to

output = theano.tensor.nnet.conv2d(    input, filters, input_shape=(b, c2, i1, i2), filter_shape=(c1, c2, k1, k2),    border_mode=(p1, p2), subsample=(s1, s2))# output.shape[2] == (i

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.