PyTorch学习笔记----自动求梯度

在深度学习中,我们经常需要对函数求梯度(gradient)。PyTorch提供的autograd包能够根据输⼊和前向传播过程自动构建计算图,并执行反向传播。本节将介绍如何使用autograd包来进行自动求梯度的有关操作。

1、Tensor

在这里插入图片描述
创建⼀个Tensor并设置requires_grad属性为True:

x = torch.ones(2,2,requires_grad=True)
print(x)
print(x.grad_fn)

输出为:

tensor([[1., 1.],
        [1., 1.]], requires_grad=True)
None

再做⼀下运算操作:

y = x + 2
print(y)
print(y.grad_fn)

输出为:

tensor([[3., 3.],
        [3., 3.]], grad_fn=<AddBackward0>)
<AddBackward0 object at 0x112480910>

注意x是直接创建的,所以它没有grad_fn , 而y是通过一个加法操作创建的,所以它有一个为的grad_fn.
像x这种直接创建的称为叶子节点,叶子节点对应的grad_fn为None。

2、梯度

因为out是一个标量,所以调用.backward()时不需要指定求导变量:

out.backward() # 等价于 out.backward(torch.tensor(1.))

我们来看看 out 关于 x 的梯度 :

print(x.grad)

输出为:

tensor([[4.5000, 4.5000],
 [4.5000, 4.5000]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章