Pytorch框架之tensor.grad

NULL not error發表於2020-10-30

                         QQ:3020889729                                                                                 小蔡

grad – tensor的梯度屬性

檢視需要記錄梯度的引數的梯度值

'''
	給某一個變數開啟梯度記錄,然後投入運算中,獲取運算操作並進入計算圖中
	經過一系列操作後,利用輸出的y進行backward反向計算--獲取x的梯度值
	ps: 最後backward時的引數--這裡是y,必須是scaler -- 標量才可以計算梯度
'''
x = torch.tensor([2., 4., 6.])
x.requires_grad = True     # 開啟梯度
y = x.T * x * 2   # 開始構建計算圖
y.sum().backward()
print(x.grad)
CodePrint
tensor.gradgrad_value

backward – tensor計算梯度的方法

根據當前呼叫backward()的tensor 往前計算梯度 — 呼叫backward的tensor需要為scaler(標量).
[ps: 要想呼叫backward, 要保證當前tensor所包含的變數運算過程中存在requires_grad的tensor(或上一步運算存在)]

正常執行:

x = torch.tensor([2., 4., 6.])
x.requires_grad = True     # 開啟梯度
y = x.T * x * 2   # 開始構建計算圖
y.sum().backward()
print(x.grad)     # 輔助檢測backward是否正常執行

在這裡插入圖片描述
使用未記錄梯度的tensor進行運算,無法使用backward方法計算梯度
在這裡插入圖片描述

相關文章