背景
信号与系统这门课我忘得快差不多了,现在只记住了一个概念:时域卷积等于频域乘积
现在用深度学习,总感觉里面的卷积怪怪的,如下是深度学习所谓的“卷积”(其实是互相关运算):
输入对应位置和卷积核对应位置相乘再求和,得到输出。
0×0+1×1+3×2+4×3=19,
1×0+2×1+4×2+5×3=25,
3×0+4×1+6×2+7×3=37,
4×0+5×1+7×2+8×3=43.
卷积定义
设 f ( x ) f(x) f(x)和 g ( x ) g(x) g(x)是在R上的可积函数,作积分:
∫
−
∞
+
∞
f
(
τ
)
g
(
x
−
τ
)
d
τ
\begin{aligned} \int_{-\infty}^{+\infty}f(\tau)g(x-\tau)d\tau \end{aligned}
∫−∞+∞f(τ)g(x−τ)dτ
可以证明,关于几乎所有的实数
x
x
x,上述积分是存在的。这样,随着
x
x
x的不同取值,这个积分就定义了一个新函数
h
(
x
)
h(x)
h(x),称为函数
f
f
f与
g
g
g的卷积,记为
h
(
x
)
=
(
f
∗
g
)
(
x
)
h(x)=(f*g)(x)
h(x)=(f∗g)(x)。
那么按照这个定义,对于上述矩阵的卷积操作,应该是这样的:
0×3+1×2+3×1+4×0=5,
1×3+2×2+4×1+5×0=11,
.
.
.
...
...
这样可能还不是很直观,那就搬一下知乎大佬的动图作解释如下:
f
,
g
f,g
f,g为同尺寸矩阵,现在假设
f
f
f为输入矩阵中某一块,
g
g
g为卷积核,如下卷积操作得到这点的卷积值:
这其实相当于将卷积核左右翻转,再上下翻转,然后做互相关运算。
可以看出如果卷积核是一个方块,并且它关于中心对称,那么卷积和互相关运算得到的结果是一样的
实际使用
现在深度学习中所做的卷积操作,其实都是互相关运算。无论哪个框架,conv2的API都是这个操作。
对于我来讲,卷积就是一种运算,和加减乘除一样。
至于区别
这里我推荐这篇知乎文章
传送门