尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

torch-harmonics 球谐函数数学基础:零基础也能懂的傅里叶变换球面版

torch-harmonics 球谐函数数学基础:零基础也能懂的傅里叶变换球面版 torch-harmonics 球谐函数数学基础零基础也能懂的傅里叶变换球面版【免费下载链接】torch-harmonicsDifferentiable signal processing on the sphere for PyTorch项目地址: https://gitcode.com/gh_mirrors/to/torch-harmonicstorch-harmonics 是 NVIDIA 开源的PyTorch 球面信号处理库核心功能是可微分的球谐变换Spherical Harmonic Transform, SHT、球面 DISCO 卷积和球面注意力。可以把它理解为傅里叶变换的球面版一维信号用正弦波分解球面信号比如地球表面温度场就用球谐函数分解。本文用通俗语言讲清背后的数学零基础也能看懂。一、为什么需要球面版傅里叶变换传统傅里叶变换处理的是周期性一维信号如声波、时间序列它的积木块是正弦函数。但地球、恒星大气、球冠数据都生活在二维球面 S²上——你无法直接把一张等经纬度网格摊平做普通 FFT因为球面有曲率经线在两极会汇聚。球面版的解法很自然为球面找一组正交基函数任何球面信号都可以用这组基函数加权叠加来表示——这组基函数就是球谐函数Spherical Harmonics。 上图是 torch-harmonics 驱动的**球面傅里叶神经算子SFNO**模拟结果——它正是靠球谐变换在频域做运算从而高效求解球面上的偏微分方程如浅水方程、Ginzburg–Landau 方程。二、球谐函数长什么样一个公式讲明白球谐函数由两个角度参数决定余纬 θcolatitude从北极往下量的角度0 到 π经度 λlongitude绕地球转圈的角度0 到 2π。定义式来自 README.md$$ Y_l^m(\theta, \lambda) \sqrt{\frac{2l 1}{4 \pi} \frac{(l - m)!}{(l m)!}} ; P_l^m(\cos \theta), e^{i m \lambda} $$看起来吓人拆开看只有三块组成部分含义直觉$P_l^m(\cos\theta)$连立勒让德多项式只依赖纬度 θ控制纬度方向上有几个波瓣$e^{im\lambda}$复指数只依赖经度 λ就是普通傅里叶波沿经度转 m 圈前面的根号归一化系数保证基函数正交类比傅里叶系数的 $\frac{1}{\sqrt{N}}$两个整数控制形状度 ldegree波瓣的总复杂度l 越大表面波动越密阶 morder绕极轴的旋转数|m| 决定沿经度方向有 m 个振荡。球面温度、海洋流场、宇宙微波背景……任何球面信号都能写成$$ f(\theta, \lambda) \sum_{l0}^{\infty}\sum_{m-l}^{l} \hat{f}_l^m , Y_l^m(\theta, \lambda) $$这与傅里叶级数 $f(x)\sum \hat{f}_k e^{ikx}$ 完全同构——系数 $\hat{f}_l^m$ 就是球面频域的表示。三、球谐变换SHT投影到球面基函数上球谐变换的定义是内积投影把球面信号 $f$ 投到每个基函数上$$ \hat{f}l^m \int{S^2} \overline{Y_l^m(\theta,\lambda)}, f(\theta,\lambda), d\mu $$直接双重积分太慢O(N⁴)。torch-harmonics 的聪明之处源自 Schaeffer 算法是把球面积分拆成两步总复杂度降到 O(N² log N)第 1 步经度方向做 FFT 注意到 $Y_l^m$ 中经度部分是 $e^{im\lambda}$——这就是傅里叶波所以沿每个纬度圈做一维 FFT$$ \hat{f}^m(\theta) \frac{1}{2\pi}\int_0^{2\pi} f(\theta,\lambda), e^{-im\lambda}, d\lambda $$一步 FFT 同时提取所有 m 阶系数。PyTorch 里这就是torch.fft.rfftsht.py 中RealSHT正是这样实现的GPU 上走 cuFFT。第 2 步纬度方向做勒让德变换 剩下纬度方向 $P_l^m(\cos\theta)$ 的积分没有 FFT 这么巧用数值积分quadrature在纬度取若干网格点按权重求和$$ \hat{f}l^m \sum{j1}^{N_\theta} \hat{f}^m(\theta_j), P_l^m(\cos\theta_j), w_j $$其中 $x_j$ 是积分节点、$w_j$ 是权重。torch-harmonics 支持四种网格见 quadrature.py网格特点equiangular默认均匀经纬网 Clenshaw–Curtis 权重FFT 友好legendre-gaussGauss–Legendre 积分等权重最美观lobatto含端点的 Gauss 型网格equiangular-trapezoidal周期性梯形规则连立勒让德多项式 $P_l^m$ 的值则用三项递推高效计算实现在 legendre.py 的legpoly中——递推按阶 l 顺序进行但同一 l 下所有 m 已向量化把 O(N²) 次 kernel 启动压缩到 O(N)。反变换从频域回球面截断的球谐展开保留 l ≤ M 的低频部分即逆 SHT$$ f(\theta,\lambda) \approx \sum_{m-M}^{M} e^{im\lambda} \sum_{l|m|}^{M} \hat{f}_l^m , P_l^m(\cos\theta) $$对应模块是 sht.py 中的InverseRealSHT。截断高频还能免费得到平滑滤波——truncate_sht提供这个工具。四、为什么可微分是关键卖点torch-harmonics 全程用 PyTorch 原生张量运算FFT、矩阵乘、递推实现每一步都对系数可导。这意味着✅ SHT 可以直接嵌入神经网络做可学习谱卷积SpectralConvS2spectral_convolution.py变换到频域 → 学一组滤波器 → 变换回空域✅ 可以训练**球面傅里叶神经算子SFNO**这类几何深度学习模型✅ 能构建可微分 PDE 求解器Helmholtz 方程、浅水方程梯度可以从损失一路传回球面输入✅ 积分权重支持多卡分布式torch_harmonics.distributed大球面网格可空间切分并行。最小使用示例3 行核心代码import torch, torch_harmonics as th signal torch.randn(32, 512, 1024) # (batch, nlat, nlon) coeffs th.RealSHT(512, 1024, gridequiangular)(signal) # 球谐系数五、从数学到应用一张图串起来球面网格 f(θ,λ) │ ① 每纬度圈做 FFT经度 ▼ 傅里叶模式 f̂^m(θ) │ ② 勒让德积分纬度quadrature 权重 ▼ 球谐系数 f̂^l_m ──→ 频域滤波 / 学习 / 截断 │ ③ 逆 SHT ▼ 重建信号 f̃(θ,λ)典型应用场景场景用到的模块球面信号频域分析 / 平滑RealSHT/InverseRealSHT球面神经算子SFNOSpectralConvS2非结构化网格上的局部卷积DiscreteContinuousConvS2DISCOdisco/球面 Transformer 注意力AttentionS2球面几何感知的注意力attention/球面重采样 / 随机场ResampleS2、random_fields.py六、零基础学习路径 先玩 notebook仓库自带一系列教程从入门到实战getting_started.ipynb——30 分钟上手球谐变换plot_spherical_harmonics.ipynb——亲眼看到 l、m 如何改变基函数形状quadrature.ipynb——理解积分网格与权重train_spherical_neural_operator.ipynb——训练 SFNO。读数学主线README.md 的 More about torch-harmonics 一节有完整公式推导球谐定义 → SHT → 离散勒让德变换。看源码RealSHT.forwardsht.py把经度 FFT 纬度积分两段拼在一起只有百余行是最好的学习入口。七、常见疑问 FAQQ球谐变换和傅里叶变换到底什么关系A球谐变换是傅里叶变换在球面的推广。圆环一维周期空间的正交基是 $e^{ikx}$傅里叶二维球面的正交基是 $Y_l^m$球谐。FFT 之于正弦波正如 SHT 之于球谐函数。Q为什么经度方向能直接用 FFTA因为 $Y_l^m$ 的经度部分恰好是 $e^{im\lambda}$沿经线切开后每个纬度圈都是周期信号——这就是球面上半傅里叶、半勒让德的由来。Q精度和性能如何ASHT 复杂度 O(N² log N)远优于朴素 O(N⁴) 投影库内带 CUDA/CPU 优化核attention/optimized、disco/optimizedbenchmarks/ 目录提供 SHT、DISCO、注意力的完整基准测试。QGPU 必须吗A不是。pip install torch-harmonics装 CPU 版即可学习GPU 加速版可按 README.md 的安装说明选择对应 CUDA 预编译包。一句话总结球谐函数 球面上的正弦波球谐变换 球面上的傅里叶变换torch-harmonics 让这一切在 PyTorch 里又快又可导。掌握经度 FFT 纬度勒让德积分这两步你就拿到了球面信号处理的完整钥匙。 【免费下载链接】torch-harmonicsDifferentiable signal processing on the sphere for PyTorch项目地址: https://gitcode.com/gh_mirrors/to/torch-harmonics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表