PyTorch之线性回归
时间: 2023-11-14 22:04:35 浏览: 95
线性回归是一种经典的机器学习算法,用于建立变量之间的线性关系,从而预测连续型变量的值。在PyTorch中,可以使用torch.nn模块来实现线性回归。
以下是一个简单的例子,展示如何使用PyTorch实现线性回归:
首先,导入必要的库:
```python
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
```
接下来,我们生成一些随机的数据,用于训练模型:
```python
#生成随机数据
np.random.seed(0)
X = np.random.rand(100, 1)
y = 2 + 3*X + 0.2*np.random.randn(100, 1)
```
然后,我们定义一个线性回归模型,该模型由一个全连接层组成:
```python
#定义线性回归模型
class LinearRegression(nn.Module):
def __init__(self, input_dim, output_dim):
super(LinearRegression, self).__init__()
self.linear = nn.Linear(input_dim, output_dim)
def forward(self, x):
out = self.linear(x)
return out
#实例化模型
model = LinearRegression(1, 1)
```
在训练模型之前,我们需要定义损失函数和优化器:
```python
#定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
```
接下来,我们进行模型训练:
```python
#训练模型
epochs = 1000
for epoch in range(epochs):
inputs = torch.from_numpy(X).float()
labels = torch.from_numpy(y).float()
#前向传播
outputs = model(inputs)
#计算损失
loss = criterion(outputs, labels)
#反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
#每100个epoch打印一次损失
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, epochs, loss.item()))
```
最后,我们可以使用训练好的模型来进行预测:
```python
#使用模型进行预测
predicted = model(torch.from_numpy(X).float()).data.numpy()
#绘制预测结果和真实结果的散点图
plt.plot(X, y, 'ro', label='Original data')
plt.plot(X, predicted, label='Fitted line')
plt.legend()
plt.show()
```
这样,我们就完成了一个简单的线性回归模型的实现。
阅读全文