1. 傅里叶变换
import torch
input = torch.randn(64, 1, 200, 200)
# ### 旧版 ###
# # 时域=>频域
# output_fft_old = torch.fft(input, signal_ndim=2, normalized=False, onesided=False)
# # 频域=>时域
# output_ifft_old = torch.ifft(output_fft_old , signal_ndim=2, normalized=False, onesided=False)
### 新版 ###
# 时域=>频域
output_fft_new = torch.fft.fft2(input, dim=(-2, -1))
output_fft_new_2dim = torch.stack((output_fft_new.real, output_fft_new.imag), -1) # 根据需求将复数形式转成数组形式
# 频域=>时域
# 输入为复数形式
output_ifft_new = torch.fft.ifft2(output_fft_new, dim=(-2, -1))
# 输入为数组形式,需要转为复数形式
output_ifft_new_2dim = torch.fft.ifft2(torch.complex(output_fft_new_2dim[..., 0],
output_fft_new_2dim[..., 1]), dim=(-2, -1))
# 输出复数的模
output_ifft_new = torch.abs(output_ifft_new)
print(output_fft_new.shape)
print(output_fft_new_2dim.shape)
print(output_ifft_new.shape)
print(output_ifft_new_2dim.shape)
2. 结果
torch.Size([64, 1, 200, 200])
torch.Size([64, 1, 200, 200, 2])
torch.Size([64, 1, 200, 200])
torch.Size([64, 1, 200, 200])