本人学习pytorch主要参考官方文档和 莫烦Python中的pytorch视频教程。
后文主要是对pytorch官网的文档的总结。
卷积神经网络的一个核心是差分,pytorch的一个核心包是自动求导autograd
包。
该包能够自动对所有tensor中的操作进行自动差分。
torch.Tensor
是这个包中的核心类。如果你将.requires_grad
设置为True
。当你完成运算并调用.backward()
时,会自动求导。计算得到的梯度将会存放在.grad
属性中。
可以通过调用.detach()
方法停止计算。也可以通过with torch.no_grad():
在某一代码块表示不进行计算。
对求导很重要的一个类是Function
。
自动求导
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求导
out.backward()
print(x.grad)
#output:
#<AddBackward object at #0x00000000023D7160>
#tensor([[4.5000, 4.5000],
# [4.5000, 4.5000]])
设置是否计算梯度
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)
网友评论