利用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)

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

被折叠的 条评论
为什么被折叠?



