Я строю CNN, где вход представляет собой изображение в градациях серого (256x256x1), и я хочу добавить слой преобразования Фурье, который должен выводить форму (256x256x2), с двумя каналами для реального и мнимого. Я нашел tf.signal.fft2d
на https://www.tensorflow.org/api_docs/python/tf/signal/fft2d. К сожалению, трудно найти какой-либо пример или объяснение того, как использовать его конкретно ... Я пытался:
X_input = Input(input_shape,)
X_input_fft=Lambda(lambda v: tf.cast(tf.compat.v1.spectral.rfft2d(v),dtype=tf.float32))(X_input)
l1Conv1 = Conv2D(filters = 16, kernel_size = (5,5), strides = 1, padding ='same',
data_format='channels_last',
kernel_initializer= initializers.he_normal(seed=None),
bias_initializer='zeros')(X_input_fft)
, но, честно говоря, я не знаю, что я делаю ...
Кроме того, для последнего слоя я хотел бы сделать обратное FFT, что-то вроде:
myLastLayer= Lambda(lambda v: tf.cast(tf.compat.v1.spectral.irfft2d(tf.cast(v, dtype=tf.complex64)),dtype=tf.float32))(myBeforeLastLayer)