Theano中的逆FFT

3
我知道 theano.tensor.fourier.fft 实际上是 numpy.fft.fft。然而,我想知道是否有实现逆FFT的函数?也就是说,是否有类似于 numpy.fft.iffttheano.tensor.fourier.ifft 函数?
我注意到
这个链接里面有这样的函数,但我不确定它对于我的需求来说有多完整或可靠。也许一些更了解 Theano 的人可以在这里发表意见。
此外,如果我要使用这个 Fourier 模块,应该怎么做呢?只需要调用 theano.sandbox.fourier.fft(x),其中 x 是一个 1D 张量,就会返回错误。
AttributeError: 'module' object has no attribute 'fourier'

有没有解决这个问题的方法?

展示你尝试过的代码。 - luoluo
1个回答

3
我无法评论代码的健壮性,但整个Theano仍在开发中(版本0.7),而这段代码位于“沙盒”中,我认为应该被视为比Theano其他部分更不稳定。
很明显,这个FFT操作是不完整的,因为它目前无法计算梯度(请注意TODO注释)。如果您需要梯度,那么抱歉,这个操作不能帮助您(也许您可以完成它并提交增强?)
这个实现只是numpy实现的一个包装器,所以如果numpy的实现足够完整和可靠,可以满足您的需求,那么这个Theano包装器可能也是如此。
请注意,由于它只是numpy的封装,它不会在GPU上运行,如果您将此操作与其他启用GPU的操作混合使用并在GPU上运行,则由于数据在主内存和GPU内存之间来回复制,会导致减速。
要使用此操作,请执行以下操作:
import theano
import theano.sandbox.fourier as tsf

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

谢谢,这真的很有帮助!你知道有没有计算梯度的FFT和IFFT Theano实现吗? - user19346
theano.tensor.fourier.fft(请参见https://github.com/Theano/Theano/blob/master/theano/tensor/fourier.py),它似乎支持梯度,但不支持逆FFT。 - Daniel Renshaw
好的,谢谢。我认为我可以很容易地修改Theano张量傅里叶实现,使其支持梯度和反傅里叶变换。 - user19346
目前,Theano不支持复杂的梯度,因此实现这一点似乎是浪费时间... - user19346

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接