卷积神经网络是含有卷积层的神经网络。
通常,在卷积层中使用更加直观的互相关运算。

在二维互相关运算中,卷积窗口从输入数组最左上方开始,按从左往右,从上往下的顺序,一次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按元素相乘并就和,得到输出数组中相应位置的元素。
例如:
0x0 + 1x1 + 3x2 + 4x3 = 19
def corr2d(x,k):
h, w = k.shape
y = torch.zeros(x.shape[0] - h + 1, x.shape[1] - w + 1)
for i in range(y.shape[0]):
for j in range(y.shape[1]):
y[i,j] = (x[i:i + h, j:j+w] * k).sum()
return y
x = torch.tensor([[0,1,2],[3,4,5],[6,7,8]])
k = torch.tensor([[0,1],[2,3]])
corr2d(x,k)
tensor([[19., 25.],
[37., 43.]])
一个应用场景—图像中物体边缘检测
假设有一张6x8的图像,且中间4列时黑(0),其余为白(1),然后构造一个高和宽为1和2的卷积核k。将该卷积核和输入做互相关运算时,如果相邻元素相同,输出0,否则输出非0。
X = torch.ones(6,8)
X[:,2:6] = 0
K = torch.tensor([[1,-1]])
corr2d(X.float(),K.float())
tensor([[ 0., 1., 0., 0., 0., -1., 0.],
[ 0., 1., 0., 0., 0., -1., 0.],
[ 0., 1., 0., 0., 0., -1., 0.],
[ 0., 1., 0., 0., 0., -1., 0.],
[ 0., 1., 0., 0., 0., -1., 0.],
[ 0., 1., 0., 0., 0., -1., 0.]])
所以,卷积层可以通过重复使用卷积核有效地表征局部空间
卷积神经网络包含卷积层,利用二维互相关运算进行处理。互相关运算从左上角开始,通过输入数组与核数组的乘积累加得到输出。卷积层在图像处理如边缘检测中有应用,通过卷积核识别局部空间特征。
2613

被折叠的 条评论
为什么被折叠?



