公司动态

torch-dct使用教程:如何3行代码完成1D DCT-II变换与完美逆变换?

📅 2026/8/24 17:20:36
torch-dct使用教程:如何3行代码完成1D DCT-II变换与完美逆变换?
torch-dct使用教程如何3行代码完成1D DCT-II变换与完美逆变换【免费下载链接】torch-dctDCT (discrete cosine transform) functions for pytorch项目地址: https://gitcode.com/gh_mirrors/to/torch-dcttorch-dct是 PyTorch 生态中的 DCT离散余弦变换Discrete Cosine Transform专用库它基于 PyTorch 内置的 FFT 运算实现因此反向传播可以贯穿整个变换过程在 CPU 和 GPU 上都能正常工作。无论是做压缩编码、音频/图像特征提取还是设计可微分的信号处理网络只需 3 行代码即可完成 1D DCT-II 变换与完美逆变换。 什么是 torch-dcttorch-dct 实现了以下变换且每种变换都有对应的完美逆变换逆变换即缩放后的 DCT-III变换类型正向函数逆向函数1D DCT-Idct1idct11D DCT-II即通常所说的 DCTdctidct2D DCT-IIdct_2didct_2d3D DCT-IIdct_3didct_3d它的核心优势在于✅可微分梯度可以直接流过 DCT 变换无缝嵌入神经网络训练✅GPU 加速所有函数天然支持 CUDA 张量✅数值精确与 scipy.fftpack 的结果误差小于 1e-10见 torch_dct/test/test_dct.py 最快安装方法一条命令搞定要求torch0.4.1pip install torch-dct依赖关系定义在 setup.py 中。如需本地运行完整测试需额外安装 scipy可参考 test_req.txt。⚡ 快速上手3行代码完成 1D DCT-II 变换这是本文的核心——对一维信号做 DCT-II 并完美还原import torch import torch_dct as dct x torch.randn(200) # 200点随机信号 X dct.dct(x) # DCT-II 变换沿最后一维进行 y dct.idct(X) # 逆变换x y误差 1e-10注意两个关键细节变换沿张量最后一维进行。对形状(batch, channels, T)的张量DCT 自动作用在T维上批量处理无需循环。idct的定义保证idct(dct(x)) x无需手动调整缩放系数。 多维 DCT2D 图像 / 3D 体数据的用法处理图像或体数据时直接把函数名换成对应版本即可X dct.dct_2d(img) # 2D DCT-II作用于最后两维 y dct.idct_2d(X) # 完美还原2D/3D 版本由 1D 变换沿各维组合而成实现见 torch_dct/_dct.py因此同样支持 GPU 与反向传播。 进阶LinearDCT 在 GPU 上快 50 倍如果你的 DCT 是固定长度的变换层比如网络中反复用同一个 4096 点的 DCT可以用线性层版本LinearDCT它预先存好 DCT 矩阵在 GPU 上执行速度约为 FFT 版本的50 倍代价是内存占用增加import torch_dct as dct linear_dct dct.LinearDCT(4096, dct) # 4096点DCT-II线性层 X linear_dct(x) # x 形状为 (batch, 4096)多维场景可搭配apply_linear_2d/apply_linear_3d使用完整说明见 torch_dct/test/test_lineardct.py。 经验法则短序列、GPU 上高频调用 → 选LinearDCT长序列、一次性变换 → 用默认dct。⚙️ norm 参数与常见坑位清单dct和idct都支持norm参数取值与 scipy 保持一致取值含义None默认标准 DCT-II 定义ortho正交归一化版本变换矩阵满足单位正交性使用时的三个高频问题忘了最后一维约定→ 变换总在最末维上进行想变换其他维度请先transpose正逆变换混用 norm→dct(x, normortho)必须搭配idct(X, normortho)才能还原想用 DCT-I→ 把dct/idct换成dct1/idct1用法完全相同定义见 torch_dct/_dct.py 项目文件速览文件说明torch_dct/init.py统一导出全部公开 APItorch_dct/_dct.pyDCT 核心实现基于torch.fft兼容 PyTorch 1.7 及更早版本torch_dct/test/test_dct.py与 scipy 对照的精度测试含 CUDA 测试torch_dct/test/test_lineardct.pyLinearDCT 线性层版本测试setup.py包元信息与依赖声明v0.1.6LICENSEMIT 开源协议 总结3 行代码即可完成 1D DCT-II 变换 完美逆变换dct.dct→dct.idct2D/3D 场景只需把函数名替换为dct_2d/dct_3d固定长度 DCT 层在 GPU 上用LinearDCT提速约 50 倍全程可微分、GPU 友好直接融入 PyTorch 训练流程现在就可以pip install torch-dct在你的下一个信号处理模型里跑起来【免费下载链接】torch-dctDCT (discrete cosine transform) functions for pytorch项目地址: https://gitcode.com/gh_mirrors/to/torch-dct创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考