资讯动态

5分钟上手torch-dct:PyTorch中DCT离散余弦变换快速入门与安装教程

发布时间:2026/8/24 11:53:55 来源:尧图企业网站定制
5分钟上手torch-dctPyTorch中DCT离散余弦变换快速入门与安装教程【免费下载链接】torch-dctDCT (discrete cosine transform) functions for pytorch项目地址: https://gitcode.com/gh_mirrors/to/torch-dcttorch-dct 是一个基于 PyTorch 的轻量级库提供完整的DCTDiscrete Cosine Transform离散余弦变换函数让你可以在 PyTorch 模型中直接进行 1D/2D/3D 的 DCT-I 与 DCT-II 正变换和逆变换全程支持梯度反传CPU 与 GPU 均可运行 。对于在深度学习里做频域特征提取、图像压缩建模、信号处理的新手来说5 分钟即可完成安装并跑通第一个变换。什么是DCT为什么深度学习里需要它离散余弦变换DCT是把信号或图像从空间域转换到频率域的经典数学工具JPEG 图片压缩的底层核心技术就是它。在 PyTorch 模型中如果你希望在网络里加入频域特征分支如图像压缩、去噪、风格迁移对音频、视频信号做可微分的变换域处理用 DCT 基函数替代手工特征让变换参与端到端训练那么就需要一个可反向传播的 DCT 实现——而这正是 torch-dct 的强项它完全基于 PyTorch 内置的 FFT 操作构建autograd天然打通训练时梯度可以顺畅地流过变换层。torch-dct 安装教程两条命令快速安装前置要求torch0.4.1setup.py 中已声明该依赖。方式一pip 直接安装推荐pip install torch-dct方式二从源码安装适合想阅读/调试实现的同学git clone https://gitcode.com/gh_mirrors/to/torch-dct cd torch-dct pip install -e .整个库当前版本为 0.1.6核心代码只有 torch_dct/_dct.py 一个文件非常小巧没有任何重型依赖。5行代码快速入门1D DCT 正变换与逆变换安装完成后导入即用。下面的例子对一维信号做 DCT-II 变换再还原误差控制在 1e-10 以内import torch import torch_dct as dct x torch.randn(200) # 构造一个随机信号 X dct.dct(x) # DCT-II 正变换沿最后一维 y dct.idct(X) # 逆变换还原出原信号 assert (torch.abs(x - y)).sum() 1e-10 # x 和 y 在数值误差内相等 小技巧dct.dct(x, normortho)还可以启用正交归一化模式与scipy.fftpack.dct的normortho行为一致方便和传统 DSP 代码对齐。torch-dct API 速查表1D/2D/3D 变换函数一览所有函数的入口定义在 torch_dct/init.py 中速查如下函数作用变换维度dct/idct1D DCT-II 正/逆变换最后一维dct1/idct11D DCT-I 正/逆变换最后一维dct_2d/idct_2d2D DCT-II 正/逆变换最后两维dct_3d/idct_3d3D DCT-II 正/逆变换最后三维注意一个统一的约定变换永远发生在张量的最后1~3个维度前面的批次维batch、channel 等都会被自动展平处理因此(batch, h, w)的图像可以直接喂给dct_2d无需手动 reshape。以图像为例img torch.randn(8, 64, 64) # 8 张 64x64 图像 F dct.dct_2d(img) # 逐张做 2D DCT进阶提速用 LinearDCT 让 GPU 上 DCT 快 50 倍默认实现基于 FFT通用且省内存。如果你追求极致推理速度可以改用LinearDCT它把 DCT 矩阵预存为固定权重的线性层在 GPU 上执行速度约为 FFT 实现的50 倍代价是显存占用略增layer dct.LinearDCT(1024, dct) # 1024 维 DCT-II权重固定不参与训练 X layer(x) # 2D 场景配合 apply_linear_2d 使用 layer2d dct.LinearDCT(64, dct) F dct.apply_linear_2d(img, layer2d)LinearDCT的权重在初始化时自动生成且requires_gradFalse不会被优化器学坏可以放心放进网络中。验证正确性运行内置测试套件项目附带了完整的测试用例torch_dct/test/test_dct.py以 scipy 为参考实现逐项比对误差阈值 1e-10。想本地验证一下环境是否装对只需pip install -r test_req.txt # 安装 pytest、scipy 等测试依赖 pytest全部通过即代表你的 torch-dct 环境工作正常 ✅。常见问题 FAQQtorch-dct 支持梯度反传吗支持。整个实现基于torch.fft的内置算子反向传播在 CPU/GPU 上均可自动完成这也是它相比手工矩阵乘法的最大优势。Q我要变换的不是最后一维怎么办先用transpose或permute把目标维度挪到最后变换完再挪回去即可例如dct.dct(x.transpose(-1, 1)).transpose(-1, 1)。Q结果和 scipy 一致吗一致。内置测试即是以scipy.fftpack.dct为参照实现数值误差小于 1e-10。Q1D 和 2D 实现选哪个通用场景用 FFT 版的dct/dct_2d若 DCT 维度高如 4096且部署在 GPU 上、追求推理速度可换成LinearDCTapply_linear_2d。小结pip install torch-dct一键安装零重型依赖dct/idct/dct1/idct1/dct_2d/idct_2d/dct_3d/idct_3d覆盖 1D~3D 全部常用变换全程可微、CPU/GPU 通用LinearDCT可在 GPU 上再提速 50 倍想深入原理可阅读 torch_dct/_dct.py 与 README.md。现在就可以在你的下一个 PyTorch 模型里试试频域变换了吧 【免费下载链接】torch-dctDCT (discrete cosine transform) functions for pytorch项目地址: https://gitcode.com/gh_mirrors/to/torch-dct创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价