神經網路中快速傅利葉變換 FFT 的梯度傳遞

2021-08-07 19:07:42 字數 896 閱讀 4451

最近需要在神經網路中構造複數酉矩陣做權重係數,使用了快速傅利葉變換和反變換.

但是fft不是theano的現成操作模組(有人寫過對應的**,所以應該會很快加進去了),所以想自己去寫梯度傳遞來徹底搞清楚這件事.

重新學一遍離散fourier transform再加找梯度相關的文獻學習,整整花了一周時間.從本科一畢業dft就忘光了...

在此總結了下,不得不說推倒的結果出來以後,真是出乎意料的漂亮,所以實現起來更是異常簡單.

傅利葉變換是線性變換.所以可以寫成f(x)=fx的形式, f是復矩陣,x是向量.

如果是實數,根據d/dx (ay)=a * d/dx (y). 大白話說,矩陣f乘向量x這種運算的雅可比矩陣(雅可比矩陣是函式的一階偏導數以一定方式排列成的矩陣)就是f矩陣本身.

雅可比矩陣乘以輸出端梯度就可以由f和向量的乘法實現了.

ok,拓展到複數領域,用的是f的共軛轉置,這裡有個簡單的例子大概理解一下

然而傅利葉變換矩陣不只如此,傅利葉變換矩陣f本身是個按比例(1/sqrt(n))縮放過的酉矩陣(scaled unitary matrix),其逆矩陣就是其共軛轉置的1/n,具體的請看多倫多大學的**證明11頁23式(

這麼一來,求傅利葉變換的梯度反向傳播,就是用傅利葉逆變換完成.注意,我們乎略1/n這個比例係數.因為如果把傅利葉變換矩陣用sqrt(n)縮放一下編成酉矩陣的話,比例係數就是1了.

反之,傅利葉逆變換的梯度反向傳播,就是用傅利葉變換了來實現了.

奇妙~!

參考:

西電dft與fft課件  

酉矩陣  

谷歌群組的討論  

快速傅利葉變換FFT

fft的作用就不多說了,搞訊號處理的人都會用上。fft的由來 傅利葉變換ft 離散傅利葉變換dft 快速傅利葉變換fft。學習資料 1 陳後金的 數字訊號處理 裡面深入淺出,該有的公式都有,程式設計思想也有。2 一篇系統講述傅利葉變換的帖子 3 學生對fft的理解 4 工程人員對fft的簡單明瞭的總...

快速傅利葉變換 FFT

bzoj 2179 fft快速傅利葉 果題 bzoj2194 請計算c k sigma a i b i k 其中 k i n 並且有 n 10 5。a,b中的元素均為小於等於100的非負整數。注意到i 和 i k有奇妙的聯絡 不妨嘗試把b翻轉 然後就變成卷積了。貼個模板 include define...

快速傅利葉變換 FFT

首先說一下我用fft做什麼,我要做的是多項式乘法,或者說,加速多項式乘法。考慮多項式a x j 0n 1aj xj,它一共有 n 項,我們稱它的次數界為 n。假設我們有兩個次數界為 n 的多項式a x 和b x 要求它們的和是非常簡單的,只需要將對應的係數相加,複雜度為o n 如果要求他們的積,則需...