【PyTorch】深度学习实践之 用PyTorch实现线性回归 Linear Regression with Pytorch

课堂笔记

使用pytorch完成如下:
[图片]

PyTorch框架

[图片]

A. 准备数据集

[图片]

B. 设计模型

不再需要手工推算梯度公式,重点在于构造计算图:
[图片]

在 loss 处调用backward对整个图进行反向传播,注意loss一定要是标量,因此要对loss求和,根据需求看是否需要求均值。
[图片]

C. 构造损失函数和优化器

[图片]

[图片]

D. 写训练周期

[图片]

实现代码:

代码汇总如下:

import torch
import matplotlib.pyplot as plt

#loss  必须是一个标量才可以用backward。

#1.准备数据集
x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[2.0],[4.0],[6.0]])

#2.使用Class设计模型
class LinearModel(torch.nn.Module):
    #构造函数,初始化
    def __init__(self):
        super(LinearModel,self).__init__()
        self.liner = torch.nn.Linear(1,1)  #(1,1)表示输入和输出的维度
        
    #前向传播函数
    #forward()相当于对父类_init_()进行重载   
    def forward(self,x):
        y_pred = self.liner(x)
        return y_pred
    
model = LinearModel()  #创建类LinearModel的实例

#3.构建损失函数和优化器的选择
criterion = torch.nn.MSELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)

#4.进行训练迭代
epoch_list =[]
loss_list=[]
for epoch in range(1000):
    y_pred = model(x_data)
    loss = criterion(y_pred,y_data)
    print(epoch,loss.item())  #.item()获取数值大小
    
    #由.backward()计算的grad将被累积。 因此,在反向传播之前,记住将梯度设置为0。
    optimizer.zero_grad()
    loss.backward()    
    optimizer.step()  #进行更新update
    epoch_list.append(epoch+1)
    loss_list.append(loss.item())

#输出权重w和偏置b
print('w=',model.liner.weight.item())
print('b=',model.liner.bias.item())

#测试模型
x_test = torch.Tensor([4.0])
y_test = model(x_test)
print('y_pred = ',y_test.data)

# 画图
plt.plot(epoch_list,loss_list)
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

结果:

[图片]

课后练习:不同优化器,损失降低差别

[图片]

for epoch in range(1000):
    #由.backward()计算的grad将被累积。 因此,在反向传播之前,记住将梯度设置为0。
    def closure():
        y_pred = model(x_data)
        loss = criterion(y_pred,y_data)
        print(epoch,loss.item())  #.item()获取数值大小
        optimizer.zero_grad()
        loss.backward()  
        return loss 
    optimizer.step(closure)  #进行更新update
    epoch_list.append(epoch+1)
    loss_list.append(loss.item())

[图片]

  • torch.optim.RMSprop
    [图片]

  • torch.optim.Rprop
    [图片]

  • torch.optim.SGD
    [图片]


学习资料


系列文章索引

教程指路:【《PyTorch深度学习实践》完结合集】 https://www.bilibili.com/video/BV1Y7411d7Ys?share_source=copy_web&vd_source=3d4224b4fa4af57813fe954f52f8fbe7

  1. 线性模型 Linear Model
  2. 梯度下降 Gradient Descent
  3. 反向传播 Back Propagation
  4. 用PyTorch实现线性回归 Linear Regression with Pytorch
  5. 逻辑斯蒂回归 Logistic Regression
  6. 多维度输入 Multiple Dimension Input
  7. 加载数据集Dataset and Dataloader
  8. 用Softmax和CrossEntroyLoss解决多分类问题(Minst数据集)
  9. CNN基础篇——卷积神经网络跑Minst数据集
  10. CNN高级篇——实现复杂网络
  11. RNN基础篇——实现RNN
  12. RNN高级篇—实现分类
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zoetu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值