高斯过程建模:从一维到二维的实现与可视化
立即解锁
发布时间: 2025-08-31 01:43:00 阅读量: 13 订阅数: 13 AIGC 

# 高斯过程建模:从一维到二维的实现与可视化
## 1. 准备工作
在开始实现高斯过程(GP)模型的代码之前,我们需要创建一个目标函数和训练数据集。这里使用 PyTorch 进行张量计算和操作,使用 Matplotlib 进行数据可视化。
### 1.1 目标函数
本示例中的目标函数是一维的 Forrester 函数,它是一个多峰函数,有一个全局最大值和一个局部最大值。其公式如下:
\[y = -\frac{(x + 1)^2 \sin(2x + 2)}{5} + 1\]
实现代码如下:
```python
import torch
import matplotlib.pyplot as plt
def forrester_1d(x):
y = -((x + 1) ** 2) * torch.sin(2 * x + 2) / 5 + 1
return y.squeeze(-1)
xs = torch.linspace(-3, 3, 101).unsqueeze(1)
ys = forrester_1d(xs)
torch.manual_seed(0)
train_x = torch.rand(size=(3, 1)) * 6 - 3
train_y = forrester_1d(train_x)
plt.figure(figsize=(8, 6))
plt.plot(xs, ys, label="objective", c="r")
plt.scatter(train_x, train_y, marker="x", c="k", label="observations")
plt.legend(fontsize=15);
```
这个代码块完成了以下操作:
1. 定义了 `forrester_1d` 函数来计算 Forrester 函数的值。
2. 创建了一个从 -3 到 3 的密集网格 `xs`,并计算了对应的函数值 `ys`。
3. 随机生成了三个训练数据点 `train_x`,并计算了它们的标签 `train_y`。
4. 使用 Matplotlib 绘制了目标函数和训练数据点。
### 1.2 流程总结
下面是准备工作的流程图:
```mermaid
graph TD;
A[导入库] --> B[定义目标函数];
B --> C[创建测试数据网格];
C --> D[生成训练数据];
D --> E[绘制目标函数和训练数据];
```
## 2. 实现高斯过程类
我们使用 GPyTorch 库来实现 GP 模型,它遵循 PyTorch 的设计哲学,所有模型类都继承自一个基模型类。
### 2.1 模型结构
我们实现一个名为 `BaseGPModel` 的类,它有两个特定的方法:`__init__()` 和 `forward()`。
```python
import gpytorch
class BaseGPModel(gpytorch.models.ExactGP):
def __init__(self, train_x, train_y, likelihood):
super().__init__(train_x, train_y, likelihood)
self.mean_module = gpytorch.means.ZeroMean()
self.covar_module = gpytorch.
```
0
0
复制全文
相关推荐










