简介:自动求导是 PyTorch 中的一个核心概念,它使得神经网络的训练过程变得更加高效和简单。在传统的深度学习框架中,如 TensorFlow,开发者需要手动编写神经网络的反向传播算法,来计算损失函数对每个参数的梯度。这种方式繁琐且容易出错。而 PyTorch 的自动求导机制使得这一过程变得更加简单和直观。
在 PyTorch 中,可以通过设置 requires_grad=True
来指定张量需要被追踪其梯度。当你对这些张量进行操作时,PyTorch 将会构建一个计算图来跟踪计算过程。当你完成所有计算后,可以调用 .backward()
方法来自动计算所有张量的梯度。这些梯度将被存储在对应张量的 .grad
属性中。
下面是一个简单的例子来说明:
import torch
# 创建一个张量并追踪其梯度
x = torch.tensor([2.0], requires_grad=True)
y = torch.tensor([3.0], requires_grad=True)
# 定义一个计算图
z = x ** 2 + 3 * y
# 计算梯度
z.backward()
# 输出梯度
print(x.grad) # 输出: tensor([4.])
print(y.grad) # 输出: tensor([3.])
这段代码首先创建了两个张量 x
和 y
,并设置了 requires_grad=True
,这意味着希望追踪这些张量的梯度信息。
然后,通过对这些张量进行数学运算,创建了一个新的张量 z
,其中 z
的值是由 x
的平方加上 3
乘以 y
得到的。
接下来,调用 z.backward()
方法计算了 z
相对于 x
和 y
的梯度。
最后,打印了 x
和 y
的梯度。在这个例子中:
x
的梯度是 4.0
,这是因为 z = x ** 2 + 3 * y
,对 x
求导为 2x
,在 x=2.0
处,2 * 2.0 = 4.0
。y
的梯度是 3.0
,这是因为 z = x ** 2 + 3 * y
,对 y
求导为 3
。因此,这段代码输出的结果是 x
的梯度为 4.0
,y
的梯度为 3.0
。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有