反卷積原理

2021-08-19 22:27:02 字數 922 閱讀 2885

一 介紹

反卷積,可以理解為卷積操作的逆運算。這裡千萬不要當成反卷積操作可以復原卷積操作的輸入值,反卷積並沒有那個功能,它僅僅是將卷積變換過程中的步驟反向變換一次而已,通過將卷積核轉置,與卷積後的結果再做一遍卷積,所以它還有個名字叫轉置卷積。

雖然它不能還原出原來卷積的樣子,但是在作用上具有類似的效果,可以將帶有小部分缺失的資訊最大化恢復,也可以用來恢復被卷積生成後的原始輸入。

反卷積具體步驟如下:

1 首先是將卷積核反轉(並不是轉置,而是上下左右方向進行遞序操作)。

2 再將卷積結果作為輸入,做補0擴充操作,即往每乙個元素後面補0.這一步是根據步長來的,對於每個元素沿著步長方向補(步長-1)個0。例如,步長為1就不用補0了。

3 在擴充後的輸入基礎上再對整體補0。以原始輸入的shape作為輸出,按照前面介紹的卷積padding規則,計算pading的補0的位置及個數,得到補0的位置及個數,得到補0的位置要上下和左右各自顛倒一下。

4 將補0後的卷積結果作為真正的輸入,反轉後的卷積核為filter,進行步長為1的卷積操作。

注意:計算padding按規則補0時,統一按照padding='same'、步長為1*1的方式來計算。

二 舉例

上圖上面部分展示:以乙個[1,4,4,1]的矩陣為例,進行filter為2*2,步長為2*2的卷積操作。

其反卷積操作步驟如上圖下半部分。

在反卷積過程中,首先將2*2矩陣通過步長補0的方式變成4*4,再通過padding反方向補0,然後與反轉後的filter使用步長為1*1的卷積操作,最終得出結果。但是這個結果已經與原來的全1矩陣不等了,說明轉置卷積只能恢復部分特徵,無法百分百的恢復原始資料。

反卷積結構及原理

反卷積 deconvolution 的概念第一次出現是zeiler在2010年發表的 deconvolutional networks中,但是並沒有指定反卷積這個名字,反卷積這個術語正式的使用是在其之後的工作中 adaptive deconvolutional networks for mid an...

卷積和反卷積

n image h 2 pad h kernel h stride h 1 image w 2 pad w kernel w stride w 1 image h 輸入影象的高度 image w 輸入影象的寬度 pad h 在輸入影象的高度方向兩邊各增加pad h個單位長度 因為有兩邊,所以乘以2 ...

反卷積 轉置卷積

搞明白了卷積網路中所謂deconv到底是個什麼東西後,不寫下來怕又忘記,根據參考資料,加上我自己的理解,記錄在這篇部落格裡。第一次看到deconv這個詞,以為deconv的結果就是卷積的逆,覺得神奇,不禁產生了 哦?轉置的卷積就可以求逆了嗎?這樣的想法,然後在matlab裡面實驗求證,我還記得當時以...