首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在角点上实现傅里叶卷积层?

如何在角点上实现傅里叶卷积层?
EN

Data Science用户
提问于 2018-12-18 09:53:15
回答 1查看 6.9K关注 0票数 8

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

提交人说,实施是用keras进行的,但并不公开。我知道我可以用以下方式定义傅里叶变换:

代码语言:javascript
运行
复制
model.add(layers.Lambda(lambda v: tf.real(tf.spectral.rfft(v))))

但这不是傅里叶卷积,对吧?从这里我该怎么走?

EN

回答 1

Data Science用户

回答已采纳

发布于 2018-12-18 10:39:06

基于FFT的卷积可以分为3部分:输入图像和滤波器的FFT,一组元素级的积,然后是输入通道的和,然后是输出的IFFT (来源)。

或者正如论文中所写的:

因此,对于傅里叶卷积层,您需要:

  1. 获取输入层并将其转换为傅里叶域:input_fft = tf.spectral.rfft2d(input)
  2. 取每个内核并将其转换为Fourier域:weights_fft = tf.spectral.rfft2d(layer.get_weights())注意:输入和内核的傅里叶域“图像”需要大小相同。
  3. 在输入的傅里叶变换和每一个核的傅里叶变换之间执行元素相乘:conv_fft = keras.layers.Multiply(input_fft, weights_fft)
  4. 执行逆傅里叶变换返回空间域。layer_output = tf.spectral.irfft2d(conv_fft)

注意:我使用了伪代码,它可能需要一些调优才能实际工作。

票数 8
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/42803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档