GPyTorch,如何为 "lengthscale" 超参数设置初始值?
GPyTorch, how to set initial value for "lengthscale" hyperparameter?
我正在根据 documentation.
使用 GPyTorch 回归器
我想为 RBF 内核中的“lengthscale”超参数设置一个初始值。
我想设置一个常数作为“lengthscale”的初始值(类似于我们在 scikit-learn Gaussian Process Regressor 中所做的)。
如果你有什么想法,请告诉我。
根据你的问题可以得出两种情况:
你想用一些值初始化你的长度尺度,但长度尺度随后被优化器进一步优化
假设您的模型与您链接的文档中给出的模型相同,只需在训练循环之前添加以下内容:
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
,然后我们将其传递给优化器。
一些可以提供帮助的来源:
我正在根据 documentation.
使用 GPyTorch 回归器我想为 RBF 内核中的“lengthscale”超参数设置一个初始值。
我想设置一个常数作为“lengthscale”的初始值(类似于我们在 scikit-learn Gaussian Process Regressor 中所做的)。
如果你有什么想法,请告诉我。
根据你的问题可以得出两种情况:
你想用一些值初始化你的长度尺度,但长度尺度随后被优化器进一步优化
假设您的模型与您链接的文档中给出的模型相同,只需在训练循环之前添加以下内容:
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
,然后我们将其传递给优化器。
一些可以提供帮助的来源: