You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

高斯过程回归中Torch与Numpy实现结果不一致问题排查

问题原因

两个版本结果不一致的核心错误出在核函数的距离计算逻辑上:

  • Numpy版本实现的是标准RBF(平方指数)核,计算的是平方欧氏距离代入核公式,RBF核无穷阶可导,对应预测结果非常平滑。
  • Torch版本错误使用了torch.cdist(p=2)返回的未平方的L2范数距离代入指数项,实际实现的是指数核(类OU核),该核仅零阶连续,预测结果会呈现锯齿状的低平滑度表现,和你观察到的现象完全匹配。
修正代码

只需要修改核计算部分,对torch.cdist返回的距离做平方,和Numpy版本的距离计算逻辑对齐即可,其余代码无需改动:

x_all = torch.cat([X, x],0)
# 修正:计算平方欧氏距离,匹配RBF核公式
dist_sq = torch.cdist(x_all, x_all, p=2) ** 2
K = sigma_s**2 * torch.exp(-0.5 * dist_sq / length_scale**2)

如果后续要做自动微分优化核参数,也可以用和Numpy逻辑完全一致的广播写法计算平方距离,数值表现完全等价:

# 等价平方距离计算写法,和numpy的dist2计算逻辑逐行对齐
dist_sq = (x_all**2).sum(dim=1, keepdim=True) + (x_all**2).sum(dim=1) - 2 * x_all @ x_all.T
效果对比
  • 错误Torch版本(误用指数核)的不平滑结果:
    GP predictive mean and plus/minus 2 std (torch-based)
  • 修正后Torch版本结果会和Numpy版本完全一致,呈现RBF核的平滑预测效果:
    GP regression with plus-minus 2 std (numpy-based)

内容的提问来源于stack exchange,提问作者Felix Lu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 22:33:24