深度學習(二)神經網絡中的卷積和反卷積原理


 原文作者:aircraft

原文地址:https://www.cnblogs.com/DOMLX/p/9579392.html

 

 

深度學習教程目錄如下,還在繼續更新完善中

深度學習系列教程目錄

 

一.卷積

  在深度學習的過程中,很多神經網絡都會用到各種卷積核來進行操作,那么我們就簡單講一下卷積的原理和實現過程。

那么卷積在神經網絡中的作用是什么呢?一開始的傳統神經網絡是沒有卷積層的,都是隱藏層加生全連接層的結構,這樣在中間得到的特征都是線性的,不能提取到一個局部的特征。而卷積神經網絡的出現解決了這個問題,通過對一個局部區域進行卷積操作得到這個局部區域的特征值傳入下層大大提升了神經網絡提取特征的能力,並且還減小了數據的大小。

那么看看卷積的過程:

可以看到這是一個3*3的卷積核在步長為1的方式遍歷這個矩陣,卷積核與其遍歷的覆蓋區域進行一個點乘(其實是協相關)的運算得到一個值存入后面的矩陣,這樣通過卷積核與數據矩陣的遍歷運算就可以直接提取(局部感受野)一小塊區域的特征,而不必像傳統神經網絡一樣一個值一個值的提取。

卷積操作的計算方式如下: 
已知:

  • input size i
  • kernel size k
  • stride s
  • padding size p

則輸出大小為: 


卷積計算公式

 

同樣的上面這種具有縮放功能的卷積操作,如果這時候我們需要的是跟原來的數據一樣大小矩陣傳出要怎么做呢?這就是Padding的意義:

可以看到上圖輸入和輸出都是一樣大小的矩陣,因為我們在其外圍加了一個大小為1 的Padding,這樣就可以滿足輸入輸出都是一樣的。同理想要擴大或者縮小只要對外圍Padding參數根據上面的公式進行調節即可。

 

二.反卷積

  既然有卷積過程那么肯定也有反卷積的過程對不對。不然怎么進行卷積神經網絡的反向傳導呢?嘿嘿

反卷積通常用於將低維特征映射成高維輸入,與卷積操作的作用相反。還是看圖比較舒服是吧:

 

上圖就是將卷積后的區域,反卷積后變成原來的矩陣,其實看推導看原理肯定是很煩很枯燥的,這里就不細說推導和原理了,那都是(線性代數)里的知識了,我們這里就講講怎么反卷積回去。

其實說來一句話就好了。-------對於反卷積過程,采用卷積過程轉置后的濾波器(參數一樣,只不過把參數矩陣水平和垂直方向翻轉了一下),這樣反着乘回去就行了。大家好好動筆體會一下這反卷積的神奇。嘿嘿

好了今天得深度學習筆記就到這里了,飛機我得去拿快遞了嘿嘿。

 

最后我這是一列的學習筆記,有興趣入門深度學習的可以看看在下后面的深度學習系列的筆記。

 

參考博客:https://blog.csdn.net/u011447369/article/details/78721574

 

 

若有興趣交流分享技術,可關注本人公眾號,里面會不定期的分享各種編程教程,和共享源碼,諸如研究分享關於c/c++,python,前端,后端,opencv,halcon,opengl,機器學習深度學習之類有關於基礎編程,圖像處理和機器視覺開發的知識

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM