回顾
前面已经学习过线性模型相关的内容,实现线性模型的过程并没有使用到Pytorch。
这节课主要是利用Pytorch实现线性模型。
学习器训练:
- 确定模型(函数)
- 定义损失函数
- 优化器优化(SGD)
之前用过Pytorch的Tensor进行Forward、Backward计算。
现在利用Pytorch框架来实现。
Pytorch实现
步骤
- 准备数据集
- 设计模型(计算预测值y_hat):从nn.Module模块继承
- 构造损失函数和优化器:使用PytorchAPI
- 训练过程:Forward、Backward、update
1. 准备数据
在PyTorch中计算图是通过mini-batch形式进行,所以X、Y都是多维的Tensor。
import torch
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])
2. 设计模型
在之前讲解梯度下降算法时,我们需要自己计算出梯度,然后更新权重。
而使用Pytorch构造模型,重点时在构建计算图和损失函数上。
class LinearModel
通过构造一个 class LinearModel类来实现,所有的模型类都需要继承nn.Module,这是所有神经网络模块的基础类。
class LinearModel这种定义的模型类必须包含两个部分:
- init():构造函数,进行初始化。
def __init__(self):
super(LinearModel, self).__init__()#调用父类构造函数,不用管,照着写。
# torch.nn.Linear(in_featuers, in_featuers)构造Linear类的对象,其实就是实现了一个线性单元
self.linear = torch.nn.Linear(1, 1)
- forward():进行前馈计算
(backward没有被写,是因为在这种模型类里面会自动实现)
Class nn.Linear 实现了magic method call():它使类的实例可以像函数一样被调用。通常会调用forward()。
def forward(self, x):
y_pred