gpflow - 我可以为 GPflow 中的不同数据类型指定不同的内核吗?
问题描述
对于我的模型,有两种不同类型的数据。让我们说类型 X1 的数据和类型 X2 的数据。
是否可以为两种数据类型实现不同的内核?那么从 X1 类型的数据开始,使用内核 X1,从 X2 类型的数据开始,使用内核 X2?(我使用VGP模型)
背景是我知道两种数据类型之一的超参数,而不是另一种数据类型的超参数。
谢谢你的帮助!
解决方案
您需要在单个数组中收集所有数据,但您可以使用内核构造函数X
的参数定义作用于该数组不同维度的内核,如笔记本教程之一所示。您必须考虑不同内核之间的协方差,例如,该笔记本示例中的加性内核是一个非常强的约束,您可能希望将它们相乘:active_dims
N, D1 = X1.shape
N, D2 = X2.shape
X = np.concatenate([X1, X2], axis=-1)
assert X.shape == (N, D1 + D2)
k1 = gpflow.kernels.Matern32(lengthscales=np.ones(D1), active_dims=slice(0, D1))
k2 = gpflow.kernels.SquaredExponential(lengthscales=np.ones(D2), active_dims=slice(D1, D1+D2))
kernel = k1 * k2
您可以将上述切片对象或显式维度列表(例如[0,1,2, 8,9]
)传递给active_dims
参数。不同子内核的活动 dims 可能会重叠。
如果您真正想要的是所有维度的相同内核,但只是修复一些长度尺度,请查看如何在 gpflow 中修复内核长度尺度的某些维度?
推荐阅读
- android-activity - Android 11 EventSequenceValidator:在 UNKNOWN 期间 IntentStarted。在每个活动开始时抛出异常
- rust - 如何在 Rust 中返回 Result 数据类型?
- vue.js - Vuetify 停止在小型显示器上缩小网站
- python - Windows Python - 调用 SQL Server 存储过程仅适用于 Python IDLE
- java - 如何获取数组的三个最高 int 的索引?
- python - opencv-python 库和 cv2 库有什么区别?
- c# - MS Access .md 和 .accdb 文件的 ODBC 驱动程序是否只能处理 64 次执行?
- firebase - React Native 无法将类作为函数调用
- node.js - 如何优化nodejs中的mongodb插入查询?
- android - 使用颤振位置插件在 Android 中自动添加后台位置权限