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=...)
我知道 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=...)