快速卷積運算 分塊卷積運算

2021-10-12 08:59:58 字數 1174 閱讀 2472

對於實時系統來說,如果兩個較長的序列做卷積運算,等待資料準備好需要較長的時間,會增加系統的處理時延。並且卷積運算的計算複雜度與序列的長度為正相關。

因此,我們考慮將長序列分割為若干個短序列,將長序列的卷積運算轉換為短序列之間的運算。一般會有如下兩種情況:

1)對於兩個序列

並且

可以將序列

fori = 0 : b

endfor

其中, 、

表示圓周卷積,

表示後

個元素。也可以用傅利葉變換來計算圓周卷積,也即,

fori = 0 : b

endfor

其中,

、 、

表示圓周卷積。此時,可以用傅利葉變換來計算圓周卷積,也即,

從而極大的提公升了卷積的計算效率。

上述方法為lms(least mean square)濾波方法的實現提供了一種快速實現的途徑,也即flms(frequency lms).

2)對於兩個序列

如果

也很大,如果採用情況1)中的計算方法,依然會增大實時系統的處理時延與計算複雜度。因此,可以考慮將

塊,每個塊長為

, 那麼

其中,

為 的第

塊. 表示將

分別向右移動

個取樣點。通過將

分割,兩個長序列的卷積仍然可以採用情況1)中的方法來實現。

在aec(acoustic echo cancellation)或者去混響(speech dereverberation)的任務中,我們一般會用較長

去建模房間的衝擊響應。此時,如果我們既想濾波器

足夠長,又想採用1)中快速計算卷積的方法,那麼我們可以考慮2)中對

分塊建模的方法。因此,aec一般會採用pbfdaf(partioned block frequency domain adaptive filter)方法,核心思想就是情況2)中的內容。在去混響任務中,我們只關注消除後期混響,也即,消除房間衝擊響應的後期內容。因此,在對房間衝擊建模的過程中,需要對早期和後期的衝擊響應分開建模,其核心思想也是2)中提到的內容。關於去混響的部分內容可以見我早期分享的內容。

warrant:基於lp技術的去混響方法​zhuanlan.zhihu.com

相關的數值**結果請檢視

卷積運算 卷積類

softmax 將實數值轉換為概率值 使用keras介面如何操作 import 匯入模組,每次使用模組中的函式都要是定是哪個模組。from import 匯入模組,每次使用模組中的函式,直接使用函式就可以了 注因為已經知道該函式是那個模組中的了。import tensorflow as tf fro...

形象理解卷積(卷積運算為何要翻轉)

在卷積的定義中 我知道問乙個概念的定義就好像問 媽媽 為什麼要叫 媽媽 一樣。但我始終覺得這樣的定義有些彆扭。想知道這樣做背後的意義。兩個函式,翻轉其中乙個,再滑動求積分,叫卷積 convultion 不翻轉就滑動求積分,叫做互相關 cross correlation 如果其中之一是偶函式,那麼卷積...

深度學習基礎 卷積 加速的卷積運算

convolution在gpu上如何實現,文中介紹了三種方法 缺點 這種實現呢需要處理許多的corner case。文中介紹cuda convnet2是實現了該種方法,該種方法在不同取值的卷積引數空間效率不一,比如batch size 128,效率很高,但是如果batch size 64,效率比較低...