【问题标题】:Inverse FFT in TheanoTheano中的逆FFT
【发布时间】:2015-11-15 23:14:40
【问题描述】:

我知道theano.tensor.fourier.fft is essentially numpy.fft.fft。但是,我想知道是否实施了逆 FFT?即,是否有类似theano.tensor.fourier.ifft,相当于numpy.fft.ifft

我注意到this 有它,但我不确定它对于做我想做的事情有多完整或可靠。也许对 Theano 有更深入了解的人可以在这里权衡一下。

另外,如果我要使用这个沙盒傅里叶,我会怎么做呢?只需调用theano.sandbox.fourier.fft(x),其中x 是一维张量,就会返回错误:

AttributeError: 'module' object has no attribute 'fourier'

有没有办法解决这个问题?

【问题讨论】:

  • 显示您尝试过的代码。

标签: python numpy fft theano ifft


【解决方案1】:

我无法评论代码的健壮性,但整个 Theano 仍在开发中(0.7 版),并且此代码在 sandbox 中,我相信它应该被认为比其他代码更不健壮的 Theano。

很明显,这个 FFT 操作是不完整的,因为它目前无法计算梯度(注意 TODO cmets)。如果您需要渐变,那么抱歉,此操作无济于事(也许您可以完成它并提交增强功能?)

这个实现只是 numpy 实现的一个 shim,所以如果 numpy 的实现足够完整和可靠,可以做你想做的事情,那么这个 Theano shim 可能也是如此。

请注意,因为这只是包装了 numpy,所以它不会在 GPU 上运行,如果您将此操作与其他启用 GPU 的操作混合并在 GPU 上运行,那么您将因为数据正在减速在主内存和 GPU 内存之间来回复制。

要使用此操作,您可以这样做:

import theano
import theano.sandbox.fourier as tsf

tsf.ifft(frames=..., n=..., axis=...)

【讨论】:

  • 谢谢,这真的很有帮助!你知道任何计算梯度的 FFT 和 IFFT Theano 实现吗?
  • theano.tensor.fourier.fft(参见github.com/Theano/Theano/blob/master/theano/tensor/fourier.py)似乎支持梯度,但不支持逆 FFT。
  • 好的,谢谢。我想我可以轻松地修改 theano 张量傅里叶实现,以使逆傅里叶处理梯度和所有内容。
  • 当然,Theano 目前不支持复杂的渐变,所以实现它似乎是在浪费时间......
猜你喜欢
  • 2012-04-30
  • 1970-01-01
  • 2018-07-12
  • 2013-05-22
  • 2018-03-16
  • 2015-08-13
  • 1970-01-01
  • 2015-08-20
  • 2022-01-20
相关资源
最近更新 更多