作者:网络小爬虫 | 来源:互联网 | 2023-08-29 20:01
我根据文档使用 GPyTorch 回归器。
我想为 RBF 内核中的“lengthscale”超参数设置一个初始值。
我想设置一个常量作为“lengthscale”的初始值(类似于我们在 scikit-learn 高斯过程回归器中可以做的)。
如果您有任何想法,请告诉我。
回答
您的问题有两种情况:
您想用某个值初始化您的长度标度,但长度标度然后由优化器进一步优化
假设您的模型与您链接的文档中给出的模型相同,只需在训练循环之前添加以下内容:
init_lengthscale = 0.1
model.covar_module.base_kernel.lengthscale = init_lengthscale
在model.covar_module
得到您的整个内核和base_kernel
得到您的RBF内核。
您想将长度标定为某个不会进一步优化的常量值
除了第一种情况的代码之外,您不会将长度尺度作为要优化到优化器的超参数提供。
all_params = set(exactModel.parameters())
final_params = list(all_params - {exactModel.covar_module.base_kernel.raw_lengthscale})
optimizer = torch.optim.Adam(final_params, lr=0.1)
我们请从组原始长度尺度值的all_params
创建final_params
,我们再传递到优化。
一些帮助来源:
- https://github.com/cornellius-gp/gpytorch/issues/689
- https://docs.gpytorch.ai/en/v1.1.1/examples/00_Basic_Usage/Hyperparameters.html