pytorch 笔记:torch.fft

Posted UQI-LIUWJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch 笔记:torch.fft相关的知识,希望对你有一定的参考价值。

1 FFT

进行一个维度的快速傅里叶变换

torch.fft.fft(input, 
                n=None, 
                dim=- 1, 
                norm=None, 
                *, 
                out=None)

1.1 主要参数

input输入,需要傅里叶变换的tensor
n

需要变换的tensor的长度,默认是input的长度

  • 如果比input长度大,那么补0
  • 如果比input长度小,那么截取
dim哪一个维度进行快速傅里叶变换
norm
  • ‘forward’:用1/n 正则化
  • ‘backward’:无需正则化
  • ‘ortho’:使用1/sqrt(n)正则化

1.2 举例

import torch

a=torch.Tensor([0,1,2,3,4])
torch.fft.fft(a)
'''
tensor([10.0000+0.0000j, -2.5000+3.4410j, -2.5000+0.8123j, -2.5000-0.8123j,
        -2.5000-3.4410j])
'''

2 iFFT

逆正则化

torch.fft.ifft(
    input, 
    n=None, 
    dim=- 1, 
    norm=None, 
    *, 
    out=None) 

2.1 主要参数

input输入,需要傅里叶变换的tensor
n

需要变换的tensor的长度,默认是input的长度

  • 如果比input长度大,那么补0
  • 如果比input长度小,那么截取
dim哪一个维度进行快速傅里叶变换
norm
  • ‘forward’:用1/n 正则化
  • ‘backward’:无需正则化
  • ‘ortho’:使用1/sqrt(n)正则化

2.2 举例

import torch

a=torch.Tensor([[0,1,2,3],
                [3,4,6,7]])
torch.fft.ifft(torch.fft.fft(a))
'''
tensor([[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j],
        [3.+0.j, 4.+0.j, 6.+0.j, 7.+0.j]])
'''

3 rFFt

将FFT结果中虚数部分为负,且有对应共轭的那一部分去除,减少存储量

torch.fft.rfft(
    input, 
    n=None, 
    dim=- 1, 
    norm=None, 
    *, 
    out=None) 

3.1  主要参数

input输入,需要傅里叶变换的tensor
n

需要变换的tensor的长度,默认是input的长度

  • 如果比input长度大,那么补0
  • 如果比input长度小,那么截取
dim哪一个维度进行快速傅里叶变换
norm
  • ‘forward’:用1/n 正则化
  • ‘backward’:无需正则化
  • ‘ortho’:使用1/sqrt(n)正则化

3.2 举例(和FFT的对比) 

import torch

a=torch.Tensor([[0,1,2,3],
                [3,4,6,7]])
torch.fft.fft(a)
'''
tensor([[ 6.+0.j, -2.+2.j, -2.+0.j, -2.-2.j],
        [20.+0.j, -3.+3.j, -2.+0.j, -3.-3.j]])
'''

torch.fft.rfft(a)
'''
tensor([[ 6.+0.j, -2.+2.j, -2.+0.j],
        [20.+0.j, -3.+3.j, -2.+0.j]])
'''

4 irfft

rfft的逆运算

import torch

a=torch.Tensor([[0,1,2,3],
                [3,4,6,7]])
torch.fft.irfft(torch.fft.rfft(a))
'''
tensor([[0., 1., 2., 3.],
        [3., 4., 6., 7.]])
'''

以上是关于pytorch 笔记:torch.fft的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch学习笔记:模型定义修改保存

Pytorch实战笔记

PyTorch学习笔记:PyTorch可视化

pytorch学习笔记

Pytorch学习笔记:基本概念安装张量操作逻辑回归

pytorch笔记01-数据增强