PyTorch入门学习:5-Linear Regression with PyTorch

Linear Regression with Pytorch

1 PyTorch Fashion

  1. Prepare dataset
  2. Design model using Class: inherit from nn.Module
  3. Construct loss and optimizer: using PyTorch API
  4. Training cycle (forward, backward, update)

2 Prepare Dataset

使用矩阵来表示数据集

3 Design Model

线性回归模型的计算图 确认权重和张量的shape,如图中z的shape为[3,1],x的shape为[4,1],则w的shape为[3,4],b的shape为[3,1]。

4 Training Cycle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import torch
# nn.Module是所有神经网络的基类,模型类应当从nn.Module继承
class LinearModel(torch.nn.Module):
def __init__(self):
# 调用父类的构造函数(必做)
super(LinearModel, self).__init__()
# nn.Linear是PyTorch的线性层类,参数为输入特征数和输出特征数
self.linear = torch.nn.Linear(1, 1)

def forward(self, x):
# Torch中nn.Linear是可调用对象,可调用对象__call__会自动调用forward方法
y_pred = self.linear(x)
return y_pred

model = LinearModel()
# 构造损失函数:均方误差损失函数nn.MSELoss()
# 参数size_average=False表示不进行平均,返回的是一个标量
criterion = torch.nn.MSELoss(size_average=False)
# 构造优化器:随机梯度下降优化器SGD()
# 参数model.parameters()自动获取模型的所有参数(权重和偏置),lr表示学习率
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

for epoch in range(1000):
# 前向传播:计算模型输出y_pred
y_pred = model(x_data)
# 计算损失:损失函数参数为模型输出和真实标签
loss = criterion(y_pred, y_data)
print(epoch, loss.item())

# 反向传播:计算梯度
loss.backward()
# 更新参数:优化器根据梯度更新参数
optimizer.step()
# 清空梯度:优化器更新参数后,需要手动将梯度置零
optimizer.zero_grad()

print(model.linear.weight.item())
print(model.linear.bias.item())

5 Exercize

5.1 Try different optimizer

  • Adagrad
  • Adam
  • Adamax
  • RMSprop
  • ASGD
  • LBFGS
  • Rprop
  • SGD

5.2 Read more example from official tutorial


PyTorch入门学习:5-Linear Regression with PyTorch
https://eleco.top/2026/02/24/learn-torch-5-Linear-Regression-with-PyTorch/
作者
Eleco
发布于
2026年2月24日
许可协议