如果使用theano.fft.rfft,则无法计算梯度。下面是重现该问题的最小代码示例:
import theano.tensor as tt
import theano.tensor.fft
def fft_real(input):
a = input.dimshuffle('x', 0)
spec = tt.fft.rfft(a, norm='ortho')
return spec[0,:,0]
inp = tt.vector('real_n', dtype='float64')
f = fft_real(inp)
cost = f.sum()
g = tt.grad(cost, inp)
出现错误:
File "C:\Anaconda3\envs\theano36\lib\site-packages\theano\tensor\elemwise.py", line 197, in __init__
(input_broadcastable, new_order))
ValueError: ('You cannot drop a non-broadcastable dimension.', ((False, False), [1]))
我正在使用theano版本1.0.2