Keras FFT 层没有效果

Keras FFT layer has no effect

您好,我正在尝试在我的模型中实现 FFT。我隔离了 fft 层以更好地查看效果,但是当我对任何数据调用我的模型时,它 returns 输入不受影响。

这是我的示例数据代码:

import matplotlib.pyplot as plt
from keras.layers import Input, Lambda
from keras.models import Model
import tensorflow as tf
import numpy as np


def fftModel1D(input_shape):
    x_input = Input(input_shape)
    x = Lambda(lambda v: tf.cast(tf.spectral.fft(tf.cast(v,dtype=tf.complex64)),tf.float32))(x_input)
    return Model(inputs=x_input, outputs=[x])

model = fftModel1D((1000, 1))
testData = np.asarray([np.expand_dims(np.sin(np.linspace(0, 100, 1000)), 1)])

pred = model.predict(testData)[0]

fig, axes = plt.subplots(1, 2)
axes[0].plot(np.squeeze(testData))
axes[1].plot(np.squeeze(pred))
plt.show()

这当前显示了相同的 sin(x) 图,而我期待第二张图上的 FFT。

我正在使用 Python 3.6.8、Keras 2.2.4、Tensorflow 1.13.1

由于输入有 2 个维度(形状为 (1000, 1)),因此使用 tf.fft2D 似乎可行。