我目前正在调查报纸美国有线电视新闻网:傅里叶卷积神经网络。本文的主要贡献是CNN训练完全转移到傅里叶域,而不失去有效性。拟议的架构如下:

提交人说,实施是用keras进行的,但并不公开。我知道我可以用以下方式定义傅里叶变换:
model.add(layers.Lambda(lambda v: tf.real(tf.spectral.rfft(v))))但这不是傅里叶卷积,对吧?从这里我该怎么走?
发布于 2018-12-18 10:39:06
基于FFT的卷积可以分为3部分:输入图像和滤波器的FFT,一组元素级的积,然后是输入通道的和,然后是输出的IFFT (来源)。
或者正如论文中所写的:

因此,对于傅里叶卷积层,您需要:
input_fft = tf.spectral.rfft2d(input)weights_fft = tf.spectral.rfft2d(layer.get_weights())注意:输入和内核的傅里叶域“图像”需要大小相同。conv_fft = keras.layers.Multiply(input_fft, weights_fft)layer_output = tf.spectral.irfft2d(conv_fft)注意:我使用了伪代码,它可能需要一些调优才能实际工作。
https://datascience.stackexchange.com/questions/42803
复制相似问题