首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以定义一个“异构”内核设计,将线性运算符合并到GPflow (或GPytorch/GPy/.)的回归中?

是否有一种方法可以定义一个“异构”内核设计,将线性运算符合并到GPflow (或GPytorch/GPy/.)的回归中?
EN

Stack Overflow用户
提问于 2020-11-23 11:54:24
回答 1查看 201关注 0票数 0

我试图用线性算子进行GP回归,例如,本文由S rkk:https://users.aalto.fi/~ssarkka/pub/spde.pdf在这个例子中从方程(8)中可以看出,对于完全协方差矩阵中的四协方差块(训练和测试数据),我需要一个不同的核函数

这绝对是可能的,也是有效的,但我想将其包含在内核定义 of (最好是) GPflow,或GPytorch,GPy等中。

但是,在内核设计的Gpflow文档中,唯一的可能性是定义一个协方差函数,作用于E 116所有E 217E 118协方差块E 219。原则上,上面的方法应该是直接添加我自己(可以解析地导出内核函数表达式),但是我看不到将‘incorporating 异构’内核函数引入回归或内核类的任何方法。我试图咨询其他包,如戈比托尔Gpy,但内核设计似乎不允许这样做。

也许我在这里遗漏了一些东西,也许我不太熟悉底层的实现来评估它,但是如果有人以前做过这样的事情或者看到了(什么应该是合理的直截了当)?执行的可能性,我会很高兴知道。

非常感谢您的回答。

亲切的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 12:06:36

这应该是相当简单的,尽管需要构建一个自定义内核。基本上,您需要一个内核,它可以为每个输入知道对应输出的线性算子是什么(这是一个函数观察/恒等算子、积分观察、导数观察等等)。您可以通过在输入矩阵X中增加一个列来实现这一点,类似于gpflow.kernels.Coregion内核的实现方式(参见这个笔记本)。然后,您需要使用KK_diag方法定义一个新内核,对于每一个线性运算符类型,都需要在输入矩阵中找到相应的行,并将其传递给适当的协方差函数(使用tf.dynamic_partitiontf.dynamic_stitch,这在GPflow的班级中以非常类似的方式使用)。

完整的实现可能需要半天左右的时间,这超出了我在这里所能做的范围,但我希望这是一个有用的启动指针,非常欢迎您加入GPflow松弛( GPflow自述中的邀请链接)并在那里进行更详细的讨论!

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

https://stackoverflow.com/questions/64967921

复制
相关文章

相似问题

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