利用PyTorch Autograd自动求导训练线性回归模型

本文通过实战演示如何利用PyTorch的Autograd特性自动求导,简化线性回归模型训练过程。详细介绍了Autograd的基本概念,展示了如何用其替代手动计算梯度,并提供了完整的代码实现。

利用PyTorch Autograd自动求导训练线性回归模型

About-说明

第一篇文章中pytorch基础入门 训练原始的线性模型,我们用手动计算微分的方式,
实现了基于Python语言的线性回归模型训练;这虽然非常适合理解相关概念,但是实现方式是非常原始的.

在查看PyTorch相关文档时,很容易就发现它把 Autograd(自动求导) 作为一个突出的优势,所以这篇文章旨在了解 Autograd的概念上,实现上一篇文章的线性回归模型.
归纳而言,这篇会相对简单,主要包含以下几点:

  • PyTorch Autograd 概念介绍
  • 利用 Autograd 替代手动求解导数
  • 实现 Autograd 方式的线性回归模型

PyTorch Autograd 概念介绍

简单介绍就是:
PyTorch中设置 requires_grad 为True, PyTorch就会为你记录表达式转换过程的求导链,
当你执行backward()时,原始参数的grad就包含了对应参数的导数;
对应的官网入门讲解地址

原理虽然简单,但其中有不少细节需要注意:

  • 首先需要这个函数链是可导的
  • 一个 backward 对应一个 grad计算值,所以重复 backward 以及中间环节执行 backward 都会导致 grad 值变化
  • 一个 grad 使用完之后,需要记得 设置为 0 ,再次 backward 才能得到正确的值

利用 Autograd 替代手动求解导数

# 设置 requires_grad=True ,告诉PyTorch需要记录params上所有的操作
params = torch.tensor([1.0, 0.0], requires_grad=True)

# 目前为止 params.grad is None

# 执行 backward 后, params.grad 就保存了微分值
loss = loss_fn(model(t_u, *params), t_c)
loss.backward()

# grad 使用完之后,需要记得 设置为 0
if params.grad is not None:
  params.grad.zero_()

实现 Autograd 方式的线性回归模型

替代之前loop循环

def training_loop(n_epochs, learning_rate, params, t_u, t_c):
  for epoch in range(1, n_epochs + 1)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值