Theano 中的逆 FFT

Inverse FFT in Theano

我知道 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是一维张量,returns错误:

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

有办法解决这个问题吗?

我无法评论代码的健壮性,但 Theano 作为一个整体仍在开发中(0.7 版)并且这段代码在 sandbox 中,我相信,应该考虑得更少比 Theano 的其他部分更健壮。

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

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

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

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

import theano
import theano.sandbox.fourier as tsf

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