反卷積(轉置卷積)

來源:互聯網
上載者:User

轉置卷積其實就相當於正常卷積的反向傳播。

考慮一個輸入為x=4x4,卷積核為w=3x3,步長為stride=1,zero-padding=0

將卷積核展開為一個疏鬆陣列C:


做卷積可得2x2的輸出y,C*x=y。如下圖所示:

 

那麼怎麼得到轉置卷積呢。正如我們上面說的轉置卷積其實就相當於正常卷積的反向傳播。

再對上式求輸入x的梯度:

 

我們可以發現,在反向傳播過程中梯度從高層傳向底層,正好是來自高層的梯度左乘CT。所以我們要從2x2的輸入y得到4x4的輸出,只要:CT*y。

但是要注意的一點,轉置卷積只是恢複了其形狀,並未對其值進行恢複,這也是為什麼將其稱為反卷積不合適的原因了。

其實在tensorflo中實現轉置卷積也是利用了這個性質。

另一種實現轉置卷積操作的方法是對輸入的feature map進行zero-padding,在進行正常的卷積操作就可以實現轉置卷積:

 

但是這種操作相對於上面一種有一個缺點,對一個map進行轉置卷積往往需要對其進行很多行和列的padding,所以效率相對較低。

最後需要注意的,轉置卷積和訊號處理中的反卷積是有差別,並不是卷積的反操作。

如果你不理解轉置卷積,你可以這樣去設定參數,比如,現在你需要從一個nxn的map轉置卷積到一個mxm的map,你不知道怎麼設定它的卷積核大小,padding和strides,這個時候你可以反過來考慮怎麼從mxm正常卷積到nxn的map,兩者的參數是一樣的。你定義一個卷積核,決定其進行卷積操作還是轉置卷積,只是看你是左乘C還是CT。

參考資料:A guide to convolution arithmetic for deep learning

https://www.zhihu.com/question/43609045?rf=53910187

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.