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
似乎可行。
您好,我正在尝试在我的模型中实现 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
似乎可行。