卷积是一种数学运算,对两个函数(信号)的乘积进行积分,其中一个信号翻转。 例如,下面我们对2个信号f(t)和g(t)进行卷积。
机器学习-卷积

因此,首先要做的是将信号g水平翻转(180度),然后将翻转的g滑到f上,相乘并累加所有值。
卷积信号的顺序与最终结果无关紧要,因此conv(a,b)== conv(b,a)
在这种情况下,请考虑蓝色信号f(T)是我们的输入信号和g(t)内核,当你使用卷积来过滤信号时,会使用术语内核。
输出信号尺寸1D,对于一维卷积,输出大小的计算如下:
OutPutSize = (InputSize – KernelSize) + 1

卷积的应用
人们在以下用例中对信号处理使用卷积:
1)、滤波信号(一维音频,二维图像处理)
2)、检查多少信号与另一个信号相关
3)、查找信号中的模式

Matlab和python(numpy)中的简单示例
下面我们将两个信号卷积x =(0,1,2,3,4),w =(1,-1,2)。

机器学习-卷积

手工做
为了更好地理解卷积的概念,我们手动做上面的例子。 基本上,我们将对2个信号(x,w)进行卷积。 首先是将W水平翻转(或向左旋转180度)

机器学习-卷积

之后,我们需要将翻转的W滑过输入X:
机器学习-卷积

请注意,在步骤3、4、5上,翻转的窗口完全位于输入信号内。 这些结果称为“有效”卷积。 如果翻转的窗口未完全位于输入窗口(X)内,则可以考虑为零,或计算可能计算出的值,例如 在第1步中,我们将1乘以零,其余的将被忽略。

输入填充
为了使卷积结果的大小与输入的大小相同,并避免称为圆形卷积的影响,我们用零填充信号。放置零点的位置取决于您要执行的操作,即:在1D情况下,可以将它们的每一端连接起来,但是在2D情况下,通常将其始终放置在原始信号周围。

机器学习-卷积

将卷积转换为计算图
为了计算每个节点输入和参数的偏导数,将操作转换为计算图更加容易。 在这里,我将转换以前的1D卷积,但是也可以将其扩展到2D卷积。
机器学习-卷积

在这里,我们将在有效情况下创建图形,在这种情况下,翻转的内核(权重)将完全插入到我们的输入窗口中。

机器学习-卷积

将来我们将使用此图来推断卷积层的输入(x)和权重(w)的梯度。

2D输出大小
在对输出执行一些卷积运算之后,了解输出的尺寸将很有用。 幸运的是,有一个方便的公式可以准确地告诉我们。
如果我们考虑将由P填充的空间大小[H,W]的输入与大小为F的方核并使用步幅S卷积,则卷积的输出大小定义为:
outputSizeW=(W−F+2P)/S+1
outputSizeH=(H−F+2P)/S+1
F是内核的大小,通常我们使用方形内核,因此F是内核的宽度和高度

相关文章:

  • 2021-08-29
  • 2021-11-01
  • 2021-10-20
  • 2021-12-07
  • 2021-06-29
  • 2021-08-14
  • 2021-08-24
  • 2021-12-13
猜你喜欢
  • 2021-07-24
  • 2022-12-23
  • 2021-06-29
  • 2021-08-05
  • 2021-04-29
  • 2021-07-12
  • 2021-09-29
相关资源
相似解决方案