为什么我不能使用transforms.ifft2?

2024-05-13 21:01:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下几种进口产品

import h5py
import numpy as np
import matplotlib.pyplot as plt
import torch
from fastmri.data import transforms

在一些代码行之后,我有以下两行代码:

slice_kspace2=transforms.to_tensor(slice_kspace)
slice_image=transforms.ifft2(slice_kspace2)

第一行很好,所以transforms.to_张量很好,但第二行不行,我得到以下错误

File "testForF.py", line 32, in <module>
    slice_image=transforms.ifft2(slice_kspace2)
AttributeError: module 'fastmri.data.transforms' has no attribute 'ifft2'

请帮忙。我在哪里可以找到所有人在处理fastMRI数据时使用的ifft2“变换”


Tags: to代码imageimportnumpydataasslice
1条回答
网友
1楼 · 发布于 2024-05-13 21:01:34

fastmri模块函数转换为_张量,将其转换为pytorch张量。现在您可以在这里使用pytorch函数ifft https://pytorch.org/docs/stable/fft.html#torch-fft-module并指定轴,或者使用DLpack方法将其转换为CuPy,如果您的需求更像numpy

含铜样品

    import cupy
    import torch

    from torch.utils.dlpack import to_dlpack
    from torch.utils.dlpack import from_dlpack

    import h5py
    import numpy as np
    import matplotlib.pyplot as plt
    from fastmri.data import transforms

    slice_kspace2=transforms.to_tensor(slice_kspace)
    dx = to_dlpack(slice_kspace2)
    cx = cupy.fromDlpack(dx)
    slice_image = cupy.fft.ifft2(cx)

用Pytork取样

    import h5py
    import numpy as np
    import matplotlib.pyplot as plt
    import torch
    from fastmri.data import transforms
    slice_kspace2=transforms.to_tensor(slice_kspace)
    slice_image = torch.fft.ifftn(slice_kspace2, (-2, -1))

编辑: 目前,fastmri模块将其FFT变换命名为fastmri.fft2cfastmri.ifft2c,因此可能这就是您要寻找的?(注意,它们是居中FFT,而不是传统FFT,这是c的意思) 另外,fastmri模块似乎有一个打包的带状去除示例https://github.com/facebookresearch/fastMRI/tree/master/banding_removal 使用您推荐的内容。请注意,fastmri使用的FFT方法在内部只是火炬函数,带有一些装饰,如居中,因此使用火炬模块应该是您的首选

相关问题 更多 >