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]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章