矩阵的卷积

1、离散⼆维卷积公式
 

矩阵的卷积_第1张图片

其中A为被卷积矩阵,K为卷积核,B为卷积结果,该公式中,三个矩阵的排序均从0开始。

卷积核、滤波器通常为较小尺寸的矩阵,比如3×33×3、5×55×5等,数字图像是相对较大尺寸的2维(多维)矩阵(张量),图像卷积运算与相关运算的关系如下图所示,其中FF为滤波器,XX为图像,OO为结果

矩阵的卷积_第2张图片

二、计算

现在对于上面卷积过程进行分析:我们用来做例子的 M1矩阵为 m×m(3×3)二维矩阵(被卷积矩阵),M2 为 n×n(2×2)的二维矩阵(卷积核)。

矩阵M1

1          2         3

4          5         6

7          8        9

矩阵M2

1        2

3        4

翻转

4        3 

2        1

被卷积矩阵扩展到(m+n)×(m+n)大小,将扩展部分用 0 代替,将卷积核 K 从左上角顺序地行移动,再换行,继续,直到抵达右下角。将对应元素相乘后相加。

0        0        0        0        0

0        1        2        3        0

0        4        5        6        0

0        7        8        9        0

0        0        0        0        0

 

 

部分元素的计算

矩阵的卷积_第3张图片

依次类推,剔除为 0 的元素,5×5 矩阵结果为 4×4 矩阵,卷积计算结束

1          4           7         6

7          23        33        24                 

19        53        63        42

21        52        59        36

3、使用python计算

from sympy import *
import numpy as np
from scipy import signal


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

print("full卷积:",signal.convolve2d(M3, M4,'full'))
print("same卷积:",signal.convolve2d(M3, M4,'same'))
print("valid卷积:",signal.convolve2d(M3, M4,'valid')) 

你可能感兴趣的:(矩阵,cnn,深度学习)