本文介紹了有關梯度的定義及用PyTorch自動求梯度的方法叫挟。
1.梯度的定義
假設函數(shù)的輸入是一個
維向量
,輸出是標量。函數(shù)
有關
的梯度是一個由
個偏導數(shù)組成的向量:
image
2.PyTorch自動求梯度
PyTorch中求梯度非常簡單,只要在定義一個張量時疗杉,將其requires_grad
參數(shù)指定為True
,那么之后該張量經(jīng)過一些操作后得到的標量就可以求導了蚕礼,自然也可以得出梯度烟具。
例如,我們定義一個2×2的奠蹬,元素都為1.
的張量朝聋。
import torch
x = torch.ones(2, 2, requires_grad=True)
這里要注意,如果想要自動求導囤躁,那么張量的元素只能為浮點數(shù)冀痕,否則會報如下圖所示的錯誤。
image
然后我們對
x
進行一些操作后得到一個標量z
:
y = x * x * 3
z = y.mean()
那么我們就可以對z
求導了:
z.backward()
則z
關于x
的梯度就是:
x.grad
版權聲明:本文為博主原創(chuàng)文章狸演,遵循 CC 4.0 BY 版權協(xié)議言蛇,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://ywsun.site/articles/ptnlp_3.html