1

我根据文档使用 GPyTorch 回归器。

我想为 RBF 内核中的“lengthscale”超参数设置一个初始值。

我想设置一个常数作为“lengthscale”的初始值(类似于我们在 scikit-learn Gaussian Process Regressor 中可以做的事情)。

如果您有任何想法,请告诉我。

4

1 回答 1

5

您的问题有两种情况:

  1. 您想用一些值初始化您的长度刻度,但长度刻度然后由优化器进一步优化

    假设您具有与您链接的文档中给出的相同模型,只需在训练循环之前添加以下内容:

    init_lengthscale = 0.1
    model.covar_module.base_kernel.lengthscale = init_lengthscale
    

    得到你的model.covar_module整个内核,base_kernel得到你的 RBF 内核。

  2. 您想将长度刻度固定为某个不会进一步优化的常数值

    除了第一种情况的代码之外,您不会将长度尺度作为要优化的超参数提供给优化器。

    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_paramsfinal_params其传递给优化器。

一些可以提供帮助的资源:

于 2020-12-22T12:40:58.303 回答