pytorch入门第四课——线性回归

前言

b站刘洪普老师的pytorch入门课笔记。记录学习。
本文内容为线性回归示例。

目录

  • 前言
    • 方法
    • jupyter record
    • 参考

方法

首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。 我们的线性回归模型是y= w*x + b。通过这个模型,我们对测试值x = 4.0 预测它的y值。

jupyter record

无需人工求梯度下降的导数,直接应用pytorch中的方法构造计算图即可。
1、module
所有的类都要继承于神经网络的基类nn.Module
2、loss
3、sgd optimizer

训练过程为前馈,反馈,更新。

import matplotlib as plt
import torch

x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[2.0],[4.0],[6.0]])

class LinearModel(torch.nn.Module):
    def __init__(self):#构造函数
        super(LinearModel,self).__init__()
        self.linear = torch.nn.Linear(1,1)#构造包含权重和偏置b的对象,完成wx+b的计算
    
    def forward(self,x):#forward() for __call__()
        y_pred = self.linear(x)
        return y_pred
    
model = LinearModel()

criterion = torch.nn.MSELoss(size_average = False)#使用y^和y计算损失,False表示非1/N
optimizer = torch.optim.SGD(model.parameters(),lr = 0.01)#计算所有的参数,学习率为0.01

for epoch in range(1000):
    y_pred = model(x_data)
    loss = criterion(y_pred,y_data)
    print(epoch,loss.item())
    
    optimizer.zero_grad()#梯度归0
    loss.backward()#反向传播
    optimizer.step()#梯度更新
    
print('w = ',model.linear.weight.item())
print('b = ',model.linear.bias.item())

x_test = torch.Tensor([[4.0]])
y_test = model(x_test)
print('y_pred = ',y_test.data)

0 12.930440902709961
1 6.04423713684082
2 2.974557399749756
3 1.6039438247680664
4 0.9897644519805908
5 0.7123865485191345
6 0.5850000381469727
7 0.524441659450531
8 0.4936887323856354
9 0.47625845670700073

996 2.9163902581785806e-07
997 2.87477632809896e-07
998 2.833462531270925e-07
999 2.7936749802393024e-07
w = 1.9996482133865356
b = 0.0007997381035238504
y_pred = tensor([[7.9994]])

参考

关于mini-batch

你可能感兴趣的:(t1:M,L,pytorch,线性回归)