最近需要在神经网络中构造复数酉矩阵做权重系数,使用了快速傅立叶变换和反变换.
但是FFT不是theano的现成操作模块(有人写过对应的代码,所以应该会很快加进去了),所以想自己去写梯度传递来彻底搞清楚这件事.
重新学一遍离散Fourier transform再加找梯度相关的文献学习,整整花了一周时间.从本科一毕业DFT就忘光了...
在此总结了下,不得不说推倒的结果出来以后,真是出乎意料的漂亮,所以实现起来更是异常简单.

傅立叶变换是线性变换.所以可以写成F(x)=Fx的形式, F是复矩阵,x是向量.
如果是实数,根据d/dx (Ay)=A * d/dx (y). 大白话说,矩阵F乘向量x这种运算的雅可比矩阵(雅可比矩阵是函数的一阶偏导数以一定方式排列成的矩阵)就是F矩阵本身.
雅可比矩阵乘以输出端梯度就可以由F和向量的乘法实现了.
ok,拓展到复数领域,用的是F的共轭转置,这里有个简单的例子大概理解一下https://math.stackexchange.com/questions/828689/complex-function-and-jacobian-matrix.
然而傅立叶变换矩阵不只如此,傅立叶变换矩阵F本身是个按比例(1/sqrt(N))缩放过的酉矩阵(scaled unitary matrix),其逆矩阵就是其共轭转置的1/N, 具体的请看多伦多大学的论文证明11页23式(http://www.cs.toronto.edu/~jepson/csc320/notes/fourier.pdf)
这么一来,求傅立叶变换的梯度反向传播,就是用傅立叶逆变换完成.注意,我们乎略1/N这个比例系数.因为如果把傅立叶变换矩阵用sqrt(N)缩放一下编成酉矩阵的话,比例系数就是1了.
反之,傅立叶逆变换的梯度反向传播,就是用傅立叶变换了来实现了.
奇妙~!

参考:

斯坦福大学快速傅立叶变换课堂视频  http://open.163.com/movie/2008/2/A/L/M7Q4BLENR_M7QDNTVAL.html

傅立叶变换的在线教程  http://fourier.eng.hmc.edu/e161/lectures/fourier/fourier.html

西电DFT与FFT课件  http://web.xidian.edu.cn/kywang/files/20121027_164737.pdf

酉矩阵  https://zh.wikipedia.org/wiki/%E9%85%89%E7%9F%A9%E9%98%B5

谷歌群组的讨论  https://groups.google.com/forum/#!topic/theano-dev/ZqSf3lBH89U

神经网络中快速傅立叶变换(FFT)的梯度传递相关推荐

  1. 快速傅立叶变换fft_使用快速傅立叶变换fft从气候数据中提取季节性模式

    快速傅立叶变换fft Meteorology students hardly experience smooth and expeditious data analysis. When comes t ...

  2. 快速傅立叶变换(FFT)的海面模拟

    快速傅立叶变换(FFT)的海面模拟 在这篇文章中,我们将根据Tessendorf的论文[1]中的方程来实现统计波浪模型,以模拟海洋水.  使用快速傅立叶变换,我们将能够实现实时交互的帧速率.以下提供两 ...

  3. 快速傅立叶变换(FFT)算法(原来这就是蝶形变换)

    快速傅立叶变换(FFT)算法(原来这就是蝶形变换) 为了实现FFT的海面模拟,不得不先撸个FFT算法实现. 离散傅立叶变换(DFT) 学习FFT之前,首先要先了解什么是DFT,我们都知道傅立叶变换是将 ...

  4. JavaScript实现快速傅立叶变换FFT算法(附完整源码)

    JavaScript实现快速傅立叶变换FFT算法(附完整源码) radianToDegree.js完整源代码 ComplexNumber.js完整源代码 bitLength.js完整源代码 fastF ...

  5. 如何使用计算机实现fft,快速傅立叶变换(FFT)的计算机实现..doc

    快速傅立叶变换(FFT)的计算机实现. 信号与系统课程设计 --FFT的计算机实现 快速傅里叶变换(FFT)的计算机实现 赖智鹏 华中科技大学电气与电子工程学院0809班U200811806 Emai ...

  6. 第一次邂逅快速傅立叶变换(FFT)

    为了毕业设计,我要学习JPEG,还有视频压缩技术,在JPEG的时候,我就被前面的DCT给挡住了,现如今我终于写了一个FFT程序,发了我好长的时间.如果说是因为我的无知,还是什么,我对学习这类有关数学的 ...

  7. 【快速傅立叶变换fft数论变换ntt学习小记】

    概述 fft(快速傅立叶变换)是用来解决多项式乘法的nlog(n)算法,它的主要思想是先把多项式的多项式表达法转化成若干个二维点对(x,y)(点值),把相同x的y乘起来(计算),最后利用这些点对计算出 ...

  8. Opencv学习笔记 - 使用快速傅立叶变换(FFT)检测图像清晰度

    通常的图像清晰度检测大都是计算sobel.拉普拉斯算子的方差,不过大多数时候,拉普拉斯算子方法需要进行大量的手动调整,才能定义图像是否被视为模糊.如果您可以控制照明条件,环境和图像捕获过程,则效果很好 ...

  9. 为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换?

    https://www.douban.com/note/164400821/ 写在最前面:本文是我阅读了多篇相关文章后对它们进行分析重组整合而得,绝大部分内容非我所原创.在此向多位原创作者致敬!!! ...

最新文章

  1. FFplay源代码分析:整体流程图
  2. 应用打包Ubuntu下部署ScriptCase应用一例
  3. element显示true或者false_vue+element-ui实现行数可控的表格输入
  4. python文件打开模式rb表示只读模式打开文件_一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)...
  5. 新手推荐,前端性能优化小整理,效率加倍
  6. 为什么用python写爬虫_python-做爬虫,如何避免牢狱之灾
  7. TAR命令参数详解[转]
  8. 《Matlab实用案例》系列Matlab从入门到精通实用100例案例教程目录(持续更新)
  9. 用 git 维护 vim 代码
  10. 看博客学学Android(二十一)
  11. ❤️《GUI编程从入门到精通》(建议收藏)❤️
  12. VMware View 要求操作句柄的状态错误
  13. Linux下的指令:tail
  14. 485芯片RO 口收不到信号问题分析
  15. 想在抖音上卖衣服不知道怎么入手,抖音小店改销量技术
  16. 【算法学习】 位运算中的奇巧淫记
  17. GICv3软件overview手册之GICv4对虚拟LPI的直接注入(1)
  18. h5+ 调用本地摄像头拍照
  19. 3GPP TS 23501-g51 中英文对照 | 4.3.5 Service Exposure in Interworking Scenarios
  20. python iot hub_IoT Hub入门(2)-设备发送消息到云端(d2c)

热门文章

  1. O036、Snapshot Instance 操作详解
  2. RabbitMQ指南之二:工作队列(Work Queues)
  3. MySQL/MariaDB表表达式(3):视图
  4. spring 线程安全
  5. MRBS开源会议室预订系统安装
  6. web app 自适应方案总结 弹性布局之rem
  7. 分享:利用tcp_wrappers 保护服务安全
  8. VS2010下如何改变Button颜色、背景、边框
  9. 【译】索引进阶(八):SQL SERVER唯一索引
  10. hadoop3.1.0集群搭建