1. 程式人生 > >一種快速卷積實現方法

一種快速卷積實現方法

本文基於論文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


對於