本人學(xué)習(xí)pytorch主要參考官方文檔和 莫煩Python中的pytorch視頻教程师逸。
后文主要是對pytorch官網(wǎng)的文檔的總結(jié)奏司。
卷積神經(jīng)網(wǎng)絡(luò)的一個核心是差分殊者,pytorch的一個核心包是自動求導(dǎo)autograd
包舒岸。
該包能夠自動對所有tensor中的操作進(jìn)行自動差分抚太。
torch.Tensor
是這個包中的核心類督弓。如果你將.requires_grad
設(shè)置為True
营曼。當(dāng)你完成運算并調(diào)用.backward()
時,會自動求導(dǎo)愚隧。計算得到的梯度將會存放在.grad
屬性中蒂阱。
可以通過調(diào)用.detach()
方法停止計算。也可以通過with torch.no_grad():
在某一代碼塊表示不進(jìn)行計算狂塘。
對求導(dǎo)很重要的一個類是Function
录煤。
自動求導(dǎo)
import torch
x = torch.ones(2, 2, requires_grad=True)
y = x + 2
print(y.grad_fn)
z = y * y * 3
out = z.mean()
#使用x對out求導(dǎo)
out.backward()
print(x.grad)
#output:
#<AddBackward object at #0x00000000023D7160>
#tensor([[4.5000, 4.5000],
# [4.5000, 4.5000]])
設(shè)置是否計算梯度
a = torch.randn(2, 2)
a = ((a * 3) / (a - 1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
print((a**2).requires_grad)