PyTorch深度學習總結
第六章 PyTorch中張量(Tensor)微分操作
文章目錄
- PyTorch深度學習總結
- 前言
- 一、torch.autograd模塊
- 二、主要功能和使用方法
- 1. 張量的 requires_grad 屬性
- 2. backward() 方法
- 3. torch.no_grad() 上下文管理器
- 三、函數總結
前言
上文介紹了PyTorch中張量(Tensor)
的計算
操作,本文將介紹張量
的微分
(torch.autograd
)操作。
一、torch.autograd模塊
torch.autograd
是 PyTorch 中用于自動求導
的核心工具包,它提供了自動計算張量梯度的功能。訓練模型通常需要計算損失函數關于模型參數的梯度,以便使用優化算法更新參數。
基本原理
torch.autograd
通過構建計算圖(computational graph)
來跟蹤張量上的所有操作。
計算圖
是一個有向無環圖(DAG)
,其中節點表示張量,邊表示操作。當你對一個張量進行操作時,torch.autograd 會記錄這些操作,并構建相應的計算圖。
在需要計算梯度時,torch.autograd
會使用反向傳播算法(backpropagation)
沿著計算圖反向傳播,從最終的輸出張量開始,逐步計算每個操作的梯度,并累積到需要求梯度的張量上。
二、主要功能和使用方法
1. 張量的 requires_grad 屬性
requires_grad
是張量的一個布爾屬性,用于指定是否需要對該張量計算梯度。
如果將一個張量的requires_grad
設置為True
,torch.autograd
會跟蹤該張量上的所有操作,并在需要時計算梯度。import torch # 創建一個需要計算梯度的張量 x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True