You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用numpy实现互相关FT验证卷积定理结果顺序不匹配问题求助

互相关傅里叶变换验证卷积定理顺序错位问题修复

问题根因

  • FFT工具的默认坐标约定为:数组左上角对应零频率点,你填充后的滤波器核中心位于5x5数组的中心位置(2,2),没有与FFT的坐标原点对齐,导致频域相乘后逆变换的结果出现循环移位,所以元素完全一致但排列顺序不同。
  • 你当前使用的是单位脉冲卷积核,因此逆变换结果直接呈现为输入矩阵的循环移位,与你提供的运行结果特征完全匹配。

修复方法

在对填充后的滤波器做FFT变换前,调用np.fft.ifftshift将滤波器核的中心移动到FFT约定的左上角原点位置即可,仅需要修改一行代码。

修复后关键代码片段

w_numpy = weights1.numpy()
weights_numpy = w_numpy.copy()
pad_weights = np.pad(weights_numpy, ((1, 1), (1, 1)), mode='constant', constant_values=(0, 0))
# 新增ifftshift操作对齐FFT坐标约定
pad_weights = np.fft.ifftshift(pad_weights)
fft_weights = fft2(pad_weights)

运行验证

修改后重新运行代码,逆变换输出的实部结果将和F.conv2d的直接计算结果完全一致。


内容的提问来源于stack exchange,提问作者Andrei Tulbure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:03