8 从0开始学PyTorch | PyTorch中自动计算梯度、使用优化器

文章介绍了PyTorch中的自动求导机制,如何使用requires_grad=True记录张量的运算路径,以及如何通过backward()计算梯度。此外,还提到了优化器的作用,如SGD,用于更新模型参数,并展示了如何在训练循环中使用优化器进行梯度下降。优化器模块提供了多种优化算法,如Adam、Adagrad等,用于更高效的参数更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一节,我们写了很多代码,但是不知道你有没有注意,那些代码看起来跟PyTorch关系并不是很大啊,貌似很多都是Python原生代码?

如果你是这样的感觉,那我要告诉你,你感觉的没有错。前面主要在于机制的理解,我们实际上用手动的方式实现了一遍模型求解的过程,主要的改进就是使用了PyTorch里面的tensor数据结构,但是这还不够,PyTorch提供了很多强大的功能,当然不只是在处理tensor上面的,接下来我们就要看一下,PyTorch提供的方便我们运算的各种功能。

自动计算梯度

上次我们用手动求导计算梯度,可是你别忘了,那个包浆的温度计变换只需要2个参数,而如果有10亿个参数,那用手可是求导不过来啊。不要怕,PyTorch给出了自动求导机制。在PyTorch中,可以存储张量的生产路径,包括一个张量经过了何种计算,得到的结果有哪些,借助这个能力,对于我们用到的tensor,就可以找到它的爷爷tensor和它的爷爷的爷爷tensor,并且自动对这些操作求导,所有这些只需要你的一句“我需要autograd功能”。

我们来看一下实现方式,如果你已经把上一节的代码关了,没关系,这里我们从头写起,包括原始数据,紧接着是模型函数和loss函数,最后是给params初始化,这里唯一的区别就是,我们之前的初始化参数是这么写的:
params = torch.tensor([1.0, 0.0])
现在我们在tensor方法内部加上了一个参数requires_grad,并给它赋值True

%matplotlib inline
import numpy as np
import torch
torch.set_printoptions(edgeitems=2)

t_c = torch.tensor([0.5, 14.0, 15.0, 28.0, 11.0, 8.0,
                    3.0, -4.0, 6.0, 13.0, 21.0])
t_u = torch.tensor([35.7, 55.9, 58.2, 81.9, 56.3, 48.9,
                    33.9, 21.8, 48.4, 60.4, 68.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值