pytorch 多项式回归
时间: 2023-11-12 14:59:49 浏览: 131
好的,关于 pytorch 多项式回归,可以使用 pytorch 中的 nn.Module 和 nn.Linear 来实现。具体步骤如下:
1. 定义模型:使用 nn.Module 定义一个继承自 nn.Module 的类,其中包含一个 nn.Linear 层,用于实现线性变换。
2. 定义损失函数:使用 nn.MSELoss 定义均方误差损失函数。
3. 定义优化器:使用 torch.optim 中的优化器,如 SGD 或 Adam。
4. 训练模型:使用训练数据对模型进行训练,并在每个 epoch 后计算损失函数值,直到损失函数值收敛或达到最大迭代次数。
5. 预测:使用训练好的模型对测试数据进行预测。
下面是一个简单的示例代码:
```python
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
# 生成数据
x = np.linspace(-1, 1, 100).reshape(-1, 1)
y = 3 * x ** 2 + 2 * x + 1 + np.random.normal(0, 0.1, size=x.shape)
# 转换为 tensor
x = torch.from_numpy(x).float()
y = torch.from_numpy(y).float()
# 定义模型
class PolyModel(nn.Module):
def __init__(self):
super(PolyModel, self).__init__()
self.linear = nn.Linear(1, 1)
def forward(self, x):
return self.linear(x ** 2)
model = PolyModel()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练模型
for epoch in range(1000):
optimizer.zero_grad()
y_pred = model(x)
loss = criterion(y_pred, y)
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print('Epoch {}, Loss {}'.format(epoch, loss.item()))
# 预测
x_test = torch.Tensor([[0.5]])
y_pred = model(x_test)
print('Prediction:', y_pred.item())
```
阅读全文