一种快速卷积实现方法

本文基于论文Fast Algorithms for Convolutional Neural Networks,并且整理了相关知识点。

我们首先了解一下傅里叶变换:

对于连续型傅里叶变换的频域核时域转换公式:


对于离散的傅里叶变换:


关于傅里叶的理解 可以看这篇文章介绍 讲解的很好 https://zhuanlan.zhihu.com/p/19759362

FFT是一种快速求解DFT的一种方法,我们在大学都学过,你可能忘记了,但是下面这个图是不是很熟悉


没错FFT的原理便是如此。在卷积的时候我们利用时域的卷积等于频域的相乘的结果去进行基于FFT的卷积操作。

我们知道当长度为r 的FIR滤波器得到一个长度为m 的输出的时候需要做m+r-1次乘法(F(m,r)),因而我们可以退出通过一个r*s大小的滤波器的时候我们得到m*n的输出,我们需要进行的计算(m+r-1)(n+s-1)次乘法(F(m*n,r*s))。

当我们计算F(2,3)






对此我们最初改进,只需要2+3-1次乘法。快速卷积算法可以表示成下面所示公式




在我看来,这其实是一种数学技巧,起利用了公式转换,使得乘法次数减少,从而加快了算法的运行速度


对于这种方法我们可以推广到二维卷积,其计算公式如下:


下面给出一些常用的B、G


对于



猜你喜欢

转载自blog.csdn.net/B1009/article/details/78922764