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

前言

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

方法

首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。 我们的线性回归模型是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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂java杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值