二維卷積詳細解釋

2021-08-11 03:28:49 字數 1574 閱讀 6335

其中,矩陣a和b的尺寸分別為ma*na即mb*nb

① 對矩陣a補零,

第一行之前和最後一行之後都補mb-1行,

第一列之前和最後一列之後都補nb-1列

(注意conv2不支援其他的邊界補充選項,函式內部對輸入總是補零);

之所以都是-1是因為卷積核要在影象a上面移動,移動的時候需要滿足兩者至少有一列或者一行是重疊的.

② 將卷積核繞其中心旋轉180度;

③ 滑動旋轉後的卷積核,將卷積核的中心位於影象矩陣的每乙個元素,並求乘積和

(即將旋轉後的卷積核在a上進行滑動,然後對應位置相乘,最後相加);

下面分別是shape=full, same, valid時取輸出影象大小的情況,

其中:位置1表示輸出影象的值從當前核的計算值開始(對應輸出影象左上角),

位置2表示到該位置結束(對應輸出影象右下角)

總結:a*b,a補零,b旋轉180°,然後b沿著a逐行遍歷一遍,

遍歷的時候,b和a重疊部分進行向量積運算(例如圖中的(2,1)和(1,2)進行向量積得到為4),得到的值就是最終結果矩陣中的元素,舉例:

python2.7**驗證:

import numpy as np

a=np.array([[1,2,3,4],[5,6,7,8],[9,8,7,6]])

b=np.array([[1,2,3],[-1,0,1],[2,1,2]])

import scipy.signal

print scipy.signal.convolve(a,b)

print scipy.signal.convolve(b,a)

輸出結果為:

[[ 1  4 10 16 17 12]

[ 4 14 32 38 40 28]

[ 6 25 58 57 50 34]

[ 1  9 32 37 29 22]

[18 25 40 35 20 12]]

[[ 1  4 10 16 17 12]

[ 4 14 32 38 40 28]

[ 6 25 58 57 50 34]

[ 1  9 32 37 29 22]

[18 25 40 35 20 12]]

可知符合手工計算,同時也滿足交換律

這裡會看到,運算結果的維度比原先的矩陣更大,但是cnn中卷積的結果比原先矩陣更小。

這是因為卷積有三種模式:

full、same、valid

這裡講解的是full模式,cnn中採用的是valid模式,所以cnn中的卷積結果是越來越小。

5 1 二維卷積層

卷積神經網路 convolutional neural network 是含有卷積層 convolutional layer 的神經網路 二維互相關運算 通常在卷積層中使用更加直觀的互相關 cross correlation 運算,在二維卷積層中,乙個二維輸入陣列和乙個二維核 kernel 陣列通過...

二維矩陣與二維矩陣之間的卷積

最近在學習數字影象處理 digital image processing,dip 這門課,感覺有些吃力。由於在數字訊號處理 digital singal processing,dsp 這門課中只學了一維矩陣之間的卷積運算。假設我們的卷積核h為kernel矩陣 33 待處理矩陣f x,y 為 55 h...

二維卷積層的原理

主要介紹二維卷積層的工作原理 卷積神經網路是含有卷積層的神經網路 在二維卷積層中,乙個二維輸入陣列和乙個二維核陣列通過互相關運算輸出乙個二維陣列。例如 輸入陣列 3x3的二維陣列 核陣列 2x2的二維陣列 該陣列在卷積計算中又稱卷積核或過濾器 在二維互相關運算中,卷積視窗從輸入陣列的最左上方開始,按...