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

GPFlow2.8.1中如何为RBF(SquaredExponential)核配置ARD设置?

GPFlow 2.8.1中RBF核的ARD功能使用说明

GPFlow 2.8.1的RBF(SquaredExponential)核完全支持ARD(Automatic Relevance Determination)功能,你遇到报错是因为参数写法错误,以下是修正方案和说明:

1. 错误原因

你使用了ARD=TRUE,存在两个问题:

  • Python的布尔值关键字是True(首字母大写,其余小写),而非TRUE
  • GPFlow中RBF核的ARD参数名是小写的ard,不是大写的ARD

2. 正确的ARD启用方式

直接在初始化RBF核时传入ard=True即可:

# 启用ARD功能,为每个输入维度单独学习长度尺度
kernel = gpflow.kernels.RBF(ard=True)

3. 维度匹配注意事项

开启ARD后,核会为输入数据的每个特征维度生成独立的长度尺度参数,因此需要确保你的输入数据past_query_points的特征维度(即数据的列数)是明确的。比如输入是D维数据,优化后kernel.lengthscales会是一个长度为D的可训练向量。

4. 修正后的完整代码示例

kernel = gpflow.kernels.RBF(ard=True)  # 正确启用ARD
gpr = gpflow.models.GPR((past_query_points, past_observations), kernel)
gpflow.set_trainable(gpr.likelihood, True)
gpr.likelihood.variance.assign(1e-5)
model = GaussianProcessRegression(gpr)
print("Before optimize hyperparameters of GPR")
gpflow.utilities.print_summary(gpr)
model.optimize(dataset)
print("After optimize hyperparameters of GPR")
gpflow.utilities.print_summary(gpr)

优化后查看summary,你会看到lengthscales从单一值变成了与输入维度数量一致的向量,这就是ARD生效的标志。

5. 进阶:指定部分维度启用ARD

如果只需要对特定输入维度启用ARD,可以结合active_dims参数选择目标维度:

# 仅对第0和第2维度启用ARD
kernel = gpflow.kernels.RBF(ard=True, active_dims=[0, 2])

内容的提问来源于stack exchange,提问作者Toshichika Nakayama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:48:23