经常看人工智能相关书籍介绍卷积。
上来给如下面一行公式
然后在给出下面一段代码
怎么看怎么不觉得这段代码和上面的公式有任何联系。
实际上公式一般给出的是时域上的卷积,代码给出的是频域上的乘积。作者可能连这层意思还没搞懂。
时域与频域经过傅里叶变换可以相互转换,所以二者本质上是一个东西,而处理的数据不很相同。对于深度学习计算说,不管是图像、文本、还是音频,我们容易拿到的是他们的离散数据信息,而其本质上属于频域数据(非连续)因此,在做卷积时对应的也是频域乘积操作。
这个过程本质上是对数据进行采样
而卷积核g实际上相当于一个采样器。考虑频域采样,就是拿着核函数按照一维、二维等等坐标轴从做到右,从上到下采集数据,如何采集呢,就让g和f被g覆盖到的点做内积
g如果是1*1就是无损采样
如果是卷积核g是 a*b,而原频域函数f是m*n,
则最后出来的采样结果h的大小是
(m-a+1, n-b+1)
前提是采样步进是1,同时没有padding,(这个建议初学者自己在纸上画画比较一下就明白了)