天天看點

反卷積原理

一 介紹 反卷積,可以了解為卷積操作的逆運算。這裡千萬不要當成反卷積操作可以複原卷積操作的輸入值,反卷積并沒有那個功能,它僅僅是将卷積變換過程中的步驟反向變換一次而已,通過将卷積核轉置,與卷積後的結果再做一遍卷積,是以它還有個名字叫轉置卷積。 雖然它不能還原出原來卷積的樣子,但是在作用上具有類似的效果,可以将帶有小部分缺失的資訊最大化恢複,也可以用來恢複被卷積生成後的原始輸入。 反卷積具體步驟如下: 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矩陣不等了,說明轉置卷積隻能恢複部分特征,無法百分百的恢複原始資料。

繼續閱讀