发布时间:2022-08-19 13:22
在数学上,卷积定义为
ϕ ( x ) = ∫ − ∞ + ∞ f ( t ) g ( x − t ) d t \phi(x) = \int_{-\infin}^{+\infin} f(t)g(x-t)dt ϕ(x)=∫−∞+∞f(t)g(x−t)dt
怎么理解上面的式子呢?
首先,f(t)表示t时刻的输入,g(x-t)表示在t时刻的输入对当前x时刻的影响因子
可以看到g函数的输出是一个时间长度,而不是时刻,也就是说影响因子是跟时间长度相关而不是时刻相关的
所以才会以当前时刻x-t时刻这个时间间隔作为输入
假如现在有一堆石头,一个池子。(知乎上看到的例子,链接忘了)
我们每隔一刻时间往池子里的同一未知扔石头。
石头是我们的输入,即 ( f ( 0 ) , f ( 1 ) , f ( 3 ) , . . . , f ( T ) ) (f(0),f(1),f(3),...,f(T)) (f(0),f(1),f(3),...,f(T))
每一时刻扔出的石头造成池子中的水产生波纹,且对波纹的影响具有持续性,令其为 g ( ) g() g()
前面的信号对后面的信号会造成影响,影响的程度由持续时间决定,例如对于 t t t时刻的输入 f ( t ) f(t) f(t)对 x ( x ≥ t ) x(x\ge t) x(x≥t)时刻的影响即为 g ( x − t ) g(x-t) g(x−t)
我们假设当 x − t ≥ l x-t\ge l x−t≥l时 g ( x − t ) = 0 g(x-t)= 0 g(x−t)=0,也就是说持续时间超过一定长度后影响就可以忽略不记了。
这么一来
在 l l l时刻,最终的信号为
f ( 0 ) g ( l ) + f ( 1 ) g ( l − 1 ) + . . . + f ( l ) g ( 0 ) f(0)g(l)+f(1)g(l-1)+...+f(l)g(0) f(0)g(l)+f(1)g(l−1)+...+f(l)g(0)
在 l + 1 l+1 l+1时刻,信号为
f ( 1 ) g ( l ) + f ( 2 ) g ( l − 1 ) + . . . + f ( l + 1 ) g ( 0 ) f(1)g(l)+f(2)g(l-1)+...+f(l+1)g(0) f(1)g(l)+f(2)g(l−1)+...+f(l+1)g(0)
总之,最终的表示卷积式为
ϕ ( t ) = { f ( t − l ) g ( l ) + f ( t + 1 ) g ( l − 1 ) + . . . + f ( t ) g ( 0 ) if t ≥ l f ( 0 ) g ( t ) + f ( 1 ) g ( t − 1 ) + . . . + f ( t ) g ( 0 ) otherwise \phi(t) = \begin{cases} f(t-l)g(l)+f(t+1)g(l-1)+...+f(t)g(0) & \text{ if } t\ge l \\ f(0)g(t)+f(1)g(t-1)+...+f(t)g(0) & \text{ otherwise } \end{cases} ϕ(t)={f(t−l)g(l)+f(t+1)g(l−1)+...+f(t)g(0)f(0)g(t)+f(1)g(t−1)+...+f(t)g(0) if t≥l otherwise
卷积可以进行填充和设定步长,并且根据不同的填充方式和步长设定,有几类常见的卷积方式
首先,填充这个操作既可以在图片上进行,也可以在卷积核上进行。对图片或序列进行填充又分两种方式。一种是边界零填充,这种方式常常是下面三种情况
窄卷积(valid 卷积)