理解 PyTorch 中使用backward()的梯度计算

2024-01-20

我试图了解基本的 pytorch autograd 系统:

x = torch.tensor(10., requires_grad=True)
print('tensor:',x)
x.backward()
print('gradient:',x.grad)

output:

tensor: tensor(10., requires_grad=True)
gradient: tensor(1.)

since x是一个标量常量,没有函数应用于它,我期望0.作为梯度输出。为什么是梯度1.反而?


每当您使用value.backward(),您计算导数value(在你的情况下value == x)关于你的所有参数(在你的情况下,这只是x)。粗略地说,这意味着以某种方式参与计算的所有张量requires_grad=True。所以这意味着

x.grad = dx / dx = 1

除此之外:通过自动微分,您始终使用“常量”值进行计算:您的所有函数或网络始终在具体点进行评估。你得到的梯度是在同一点评估的梯度。没有进行符号计算。计算梯度所需的所有信息都被编码在计算图中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解 PyTorch 中使用backward()的梯度计算 的相关文章

随机推荐