用于CUDA FFT的PyTorch包装器pytorch-fft

原文:https://ptorch.com/news/73.html

由Eric Wong提供的PyTorch C扩展程序包,用于执行批量的2D CuFFT转换

安装

这个包在PyPi上。使用pip install pytorch-fft即可安装

用法

pytorch_fft.fft模块中,您可以使用以下函数执行前向和后向FFT转换(复杂到复杂)

  • fftifft一维变换
  • fft2ifft2 2D转换
  • fft3ifft3 3D转换

从同一个模块中,还可以使用以下方法实现复杂/复杂到实际的FFT转换

  • rfftirfft一维变换
  • rfft2irfft2 2D转换
  • rfft3irfft3 3D转换

对于d-D变换,需要输入张量具有> =(d + 1)尺寸(N1 X ... X NK X M1 X ... X MD),其中n1 x ... x nk是批处理FFT变换,并且m1 x ... x md是尺寸的 d-D变换。d必须是从1到3的数字。

最后,该模块包含以下帮助函数,您可能会觉得有用

  • reverse(X, group_size=1)颠倒张量的元素,并返回一个新的张量的结果。请注意,PyTorch目前不支持负面切片,请参阅此 问题。如果提供了一个组的大小,这些元素将在这个大小的组中反转。
  • expand(X, imag=False, odd=True)采用实际的二维或三维FFT的张量输出,并用其冗余条目进行扩展,以匹配复数FFT的输出。

对于autograd支持,请在pytorch_fft.fft.autograd模块中使用以下功能 :

  • FftIfft一维变换
  • Fft2dIfft2d 2D转换
  • Fft3dIfft3d 3D转换
# Example that does a batch of three 2D transformations of size 4 by 5.
import torch
import pytorch_fft.fft as fftA_real, A_imag = torch.randn(3,4,5).cuda(), torch.zeros(3,4,5).cuda()
B_real, B_imag = fft.fft2(A_real, A_imag)
fft.ifft2(B_real, B_imag) # equals (A, zeros)B_real, B_imag = fft.rfft2(A) # is a truncated version which omits# redundant entriesreverse(torch.arange(0,6)) # outputs [5,4,3,2,1,0]
reverse(torch.arange(0,6), 2) # outputs [4,5,2,3,0,1]expand(B_real) # is equivalent to  fft.fft2(A, zeros)[0]
expand(B_imag, imag=True) # is equivalent to  fft.fft2(A, zeros)[1]
# Example that uses the autograd for 2D fft:
import torch
from torch.autograd import Variable
import pytorch_fft.fft.autograd as fft
import numpy as npf = fft.Fft2d()
invf= fft.Ifft2d()fx, fy = (Variable(torch.arange(0,100).view((1,1,10,10)).cuda(), requires_grad=True), Variable(torch.zeros(1, 1, 10, 10).cuda(),requires_grad=True))
k1,k2 = f(fx,fy)
z = k1.sum() + k2.sum()
z.backward()
print(fx.grad, fy.grad)

笔记

这个遵循NumPy的语义和行为,就比如ifft2(fft2(x)) = x。请注意,用于反向FFTCuFFT语义只会翻转变换的符号,但它不是真正的逆。

同样,真正的complex / complex到真正的变体也遵循NumPy的语义和行为。在1D情况下,这意味着对于大小的输入N,它返回大小的输出N//2+1(它省略了多余的条目,请参阅Numpy文档)

pytorch_fft.fft模块中的函数不实现PyTorch autograd Function,并且在语义和功能上都与它们的numpy等价。

Autograd功能在pytorch_fft.fft.autograd模块中。

知识库内容

  • pytorch_fft/src:C源代码
  • pytorch_fft/fft:Python便捷包装
  • build.py:编译文件
  • test.py:测试NumPy FFTAutograd检查

问题和贡献

如果您有任何问题或功能要求,请提交问题或发送PR。

用于CUDA FFT的PyTorch包装器pytorch-fft相关推荐

  1. java如何给一个链表定义和传值_如何在CUDA中为Transformer编写一个PyTorch自定义层...

    如今,深度学习模型处于持续的演进中,它们正变得庞大而复杂.研究者们通常通过组合现有的 TensorFlow 或 PyTorch 操作符来发现新的架构.然而,有时候,我们可能需要通过自定义的操作符来实现 ...

  2. Pytorch学习 - Task6 PyTorch常见的损失函数和优化器使用

    Pytorch学习 - Task6 PyTorch常见的损失函数和优化器使用 官方参考链接 1. 损失函数 (1)BCELoss 二分类 计算公式 小例子: (2) BCEWithLogitsLoss ...

  3. Linux服务器安装cuda,cudnn,显卡驱动和pytorch超详细流程

    原文链接:https://blog.csdn.net/kingfoulin/article/details/98872965 基本的环境 首先了解自己服务器的操作系统内核版本等信息: 查看自己操作系统 ...

  4. Pytorch优化器Optimizer

    优化器Optimizer 什么是优化器 pytorch的优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真实标签 导数:函数在指定坐标轴上的变化率 方向导数:指定方向上的变化率(二元及以上函 ...

  5. pytorch 优化器

    深度学习五个步骤:数据 --> 模型 --> 损失函数 --> 优化器 --> 迭代训练,通过前向传播,得到模型的输出和真实标签之间的差异,也就是损失函数,有了损失函数之后,模 ...

  6. 低CUDA算力显卡用上高版本pytorch(ubuntu18.04源码编译特定版本pytorch(v1.10.0))

    低CUDA算力显卡用上高版本pytorch(ubuntu18.04源码编译特定版本pytorch(v1.10.0)) 一 电脑配置 二 正常情况下源码编译步骤 三 我的编译过程及出现的问题 首先 安装 ...

  7. Pytorch优化器全总结(一)SGD、ASGD、Rprop、Adagrad

    目录 写在前面 一. torch.optim.SGD 随机梯度下降 SGD代码 SGD算法解析 1.MBGD(Mini-batch Gradient Descent)小批量梯度下降法 2.Moment ...

  8. ASP.NET Core和Web API:用于管理异常和一致响应的自定义包装器

    目录 介绍 为什么? 怎么做? VMD.RESTApiResponseWrapper Nuget软件包 安装及使用 ASP.NET Core集成 ASP.NET Web API集成 样本响应输出 定义 ...

  9. Pytorch:优化器

    4.2 优化器 PyTorch将深度学习中常用的优化方法全部封装在torch.optim中,其设计十分灵活,能够很方便的扩展成自定义的优化方法. 所有的优化方法都是继承基类optim.Optimize ...

最新文章

  1. 用户故事与敏捷方法阅读笔记03
  2. [官方教程] [ES4封装教程]1.使用 VMware Player 创建适合封装的虚拟机
  3. winform 分页控件分享(二)
  4. 万字长文带你从零开始认识机器学习
  5. [精华][推荐]CAS SSO实现单点登录实例源码
  6. MySQL 性能优化--QueryCache的原理
  7. IPSec L2L ××× 之 Router-to-ASA
  8. CentOS_Oracle Enterprise Manager 11g 页面中文无法显示
  9. DBArtist之Oracle入门第1步: 如何安装Oracle 11g
  10. 在centos上安装mysql
  11. PADS2007无模命令与快捷键
  12. 【QT】简单易学的QT安装教程
  13. cisp证书考试费用_cisp考试费多少钱
  14. ActiveX开发详解
  15. MySQL服务器的超级管理员名称是_mysql服务器忘记了超级管理员root密码
  16. [视频]K8软件破解脱壳入门教程
  17. gold storm翔_牙狼GOLD STORM翔的人物简介
  18. @Deprecated
  19. 蓝标智能营销转型之战 ——Oracle Eloqua 市场营销云助力蓝标盈云迎战全渠道营销...
  20. 设置无线路由器与有线网络在同一网段

热门文章

  1. php文件上传绕过mime类型,文件上传限制绕过技巧
  2. variable java_在XSLT中使用Variable Argument调用Java方法
  3. python使用osgeo库_python中使用gdal,osgeo
  4. 基于textureview编写opengl程序
  5. mockito_Mockito:为什么您仍然应该欣赏InjectMocks注释
  6. jedis_通过Jedis API使用排序集
  7. c语言中怎么吃掉最后的空格,新人提问:如何将输出时每行最后一个空格删除...
  8. android怎么判断程序进入了后台,Android检测应用程序是否进入后台
  9. perl 远程 mysql_perl联接mysql
  10. MySQL约束不起作用怎么解决_MySQL中的CHECK约束不起作用