python - 函数 torch.rfft() 和 torch.irfft() 的问题
问题描述
我需要运行为旧版 PyTorch 编写的代码。我有 1.9 版。从 1.8 版开始,PyTorch 引入了函数torch.fft.rfft()
and torch.fft.irfft()
,它们的工作方式与旧的torch.rfft()
和torch.irfft()
. 我不知道如何替换这些函数,以便这段代码的工作方式与旧版本完全相同:
1.8版:
fU = torch.rfft( u, 1, onesided=False)
U = torch.irfft(fU, 1, onesided=False)
torch.fft(x, x.ndim)
请帮我
解决方案
正如您所提到的,torch.rfft()
并且在输入和输出格式方面torch.irfft()
存在差异。(参见https://github.com/pytorch/pytorch/wiki/The-torch.fft-module-in-PyTorch-1.7)torch.fft.rfft()
torch.fft.irfft()
根据PyTorch 的 GitHub 页面中的issue,我对二维操作进行了如下更改:
spectrum = torch.fft.rfft2(signal)
spectrum = torch.complex(spectrum[..., 0], spectrum[..., 1])
signal_recovered = torch.fft.irfft2(spectrum)
推荐阅读
- javascript - Javascript 范围 - 全局 vs 功能
- here-api - tce.api.here.com 和fleet.ls.hereapi.com 之间的区别
- php - 如何强制用户使用 MediaUploader 上传照片的特定/裁剪宽高比?
- python - 使用 SparseDtype['string', pd.NA] 从 pickle 加载数据帧会导致错误,具体取决于数据帧的大小
- python - 如何找到完成的表格扫描图像的轮廓?
- javascript - 盖茨比链接点击延迟
- r - 将每个单元格中的值除以跨列的特定行的几何平均值并对其进行对数转换
- jquery - 使用 setTimeOut 时如何动态更新间隔?
- javascript - 如何在javascript中将原始数据转换为int32
- android - 错误尝试调用虚拟方法。在空对象引用上