评价此页

torch.fft.ifft2#

torch.fft.ifft2(input, s=None, dim=(-2, -1), norm=None, *, out=None) Tensor#

计算 input 的二维离散傅里叶逆变换。等同于 ifftn(),但默认情况下仅对最后两个维度进行 IFFT。

注意

在具有GPU架构SM53或更高版本的CUDA上支持torch.half和torch.chalf。但它只支持每个变换维度中2的幂的信号长度。

参数
  • input (Tensor) – 输入张量

  • s (Tuple[int], optional) – 变换后维度的信号大小。如果给定,则在计算 IFFT 之前,每个维度 dim[i] 将被零填充或截断到长度 s[i]。如果指定长度为 -1,则在该维度不进行填充。默认为 s = [input.size(d) for d in dim]

  • dim (Tuple[int], optional) – 要变换的维度。默认为最后两个维度。

  • norm (str, optional) –

    归一化模式。对于逆向变换(ifft2()),这些对应于

    • "forward" - 无归一化

    • "backward" - 按 1/n 归一化

    • "ortho" - 归一化因子为 1/sqrt(n)(使 IFFT 变为正交变换)

    其中 n = prod(s) 是逻辑 IFFT 大小。使用相同的归一化模式调用正向变换(fft2())将在两次变换之间应用总体归一化 1/n。这对于使 ifft2() 成为精确的逆运算是必需的。

    默认为 "backward"(按 1/n 归一化)。

关键字参数

out (Tensor, optional) – 输出张量。

示例

>>> x = torch.rand(10, 10, dtype=torch.complex64)
>>> ifft2 = torch.fft.ifft2(x)

离散傅里叶变换是可分离的,因此这里的 ifft2() 等同于两次一维 ifft() 调用

>>> two_iffts = torch.fft.ifft(torch.fft.ifft(x, dim=0), dim=1)
>>> torch.testing.assert_close(ifft2, two_iffts, check_stride=False)