首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`GPyTorch`”中简单二维高斯过程的不适合性

“`GPyTorch`”中简单二维高斯过程的不适合性
EN

Stack Overflow用户
提问于 2019-06-18 21:56:22
回答 1查看 667关注 0票数 3

我有很大的困难,拟合一个简单的二维GP开箱使用GPyTorch。正如您在下面所看到的,匹配非常差,并且通过将RBF内核替换为类似于母函数的内容,两者都不会有太大的改善。这种优化看起来确实是趋同的,但在任何明智的事情上都不是。

代码语言:javascript
复制
class GPRegressionModel(gpytorch.models.ExactGP):
    def __init__(self, train_x, train_y, likelihood):
        super(GPRegressionModel, self).__init__(train_x, train_y, likelihood)

        self.mean_module = gpytorch.means.ConstantMean()
        self.covar_module = gpytorch.kernels.ScaleKernel(
                gpytorch.kernels.RBFKernel(ard_num_dims=2),
            )

    def forward(self, x):
        mean_x = self.mean_module(x)
        covar_x = self.covar_module(x)
        return gpytorch.distributions.MultivariateNormal(mean_x, covar_x)

除了文档中包含的示例之外,还有其他人有好的教程示例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-06 16:51:20

当我试图适应高维高斯过程时,我遇到了类似的问题。有几个建议(不确定这些建议是否有效):

  1. 尝试使用ZeroMean,而不是常量平均值。可能是拥有更多的超参数(常量均值超参数值)可以将-mll目标引导到局部极小,而不是全局极小值。使用不同的优化器,例如lbfgs (它是二阶的,而不是adamsgd,两者都是一阶的)也可能对此有所帮助。
  2. 尝试使用max规范化来规范您的输入数据,使用标准的普通规范化您的目标。简而言之,这些规范化步骤确保您的数据与这些GPR模型的默认优先级一致。有关这方面的更多信息,请访问这个GitHub问题
  3. 尝试改变学习速度来优化你的超参数,或者你训练它的时代的数量。
  4. 如果您看到任何具有数值精度的问题(特别是在规范化之后,如果您选择使用它),请尝试通过使用tensor.double()将火炬张量转换为双精度张量,将模型和数据集更改为双精度,64位精度。

同样,不能保证这些可以解决您遇到的问题,但希望它们能帮助您解决问题!

以下是我编好的一些教程

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56657552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档