原文做者:aircrafthtml
原文地址:https://www.cnblogs.com/DOMLX/p/9579392.html前端
一.卷積python
在深度學習的過程當中,不少神經網絡都會用到各類卷積核來進行操做,那麼咱們就簡單講一下卷積的原理和實現過程。c++
那麼卷積在神經網絡中的做用是什麼呢?一開始的傳統神經網絡是沒有卷積層的,都是隱藏層加生全鏈接層的結構,這樣在中間獲得的特徵都是線性的,不能提取到一個局部的特徵。而卷積神經網絡的出現解決了這個問題,經過對一個局部區域進行卷積操做獲得這個局部區域的特徵值傳入下層大大提高了神經網絡提取特徵的能力,而且還減少了數據的大小。編程
那麼看看卷積的過程:後端
能夠看到這是一個3*3的卷積核在步長爲1的方式遍歷這個矩陣,卷積核與其遍歷的覆蓋區域進行一個點乘(實際上是協相關)的運算獲得一個值存入後面的矩陣,這樣經過卷積核與數據矩陣的遍歷運算就能夠直接提取(局部感覺野)一小塊區域的特徵,而沒必要像傳統神經網絡同樣一個值一個值的提取。網絡
卷積操做的計算方式以下:
已知:機器學習
則輸出大小爲:
ide
一樣的上面這種具備縮放功能的卷積操做,若是這時候咱們須要的是跟原來的數據同樣大小矩陣傳出要怎麼作呢?這就是Padding的意義:學習
能夠看到上圖輸入和輸出都是同樣大小的矩陣,由於咱們在其外圍加了一個大小爲1 的Padding,這樣就能夠知足輸入輸出都是同樣的。同理想要擴大或者縮小隻要對外圍Padding參數根據上面的公式進行調節便可。
二.反捲積
既然有卷積過程那麼確定也有反捲積的過程對不對。否則怎麼進行卷積神經網絡的反向傳導呢?嘿嘿
反捲積一般用於將低維特徵映射成高維輸入,與卷積操做的做用相反。仍是看圖比較舒服是吧:
上圖就是將卷積後的區域,反捲積後變成原來的矩陣,其實看推導看原理確定是很煩很枯燥的,這裏就不細說推導和原理了,那都是(線性代數)裏的知識了,咱們這裏就講講怎麼反捲積回去。
其實說來一句話就行了。-------對於反捲積過程,採用卷積過程轉置後的濾波器(參數同樣,只不過把參數矩陣水平和垂直方向翻轉了一下),這樣反着乘回去就好了。你們好好動筆體會一下這反捲積的神奇。嘿嘿
好了今天得深度學習筆記就到這裏了,飛機我得去拿快遞了嘿嘿。
最後我這是一列的學習筆記,有興趣入門深度學習的能夠看看在下後面的深度學習系列的筆記。
參考博客:https://blog.csdn.net/u011447369/article/details/78721574
如有興趣交流分享技術,可關注本人公衆號,裏面會不按期的分享各類編程教程,和共享源碼,諸如研究分享關於c/c++,python,前端,後端,opencv,halcon,opengl,機器學習深度學習之類有關於基礎編程,圖像處理和機器視覺開發的知識