PyTorch 中所有神经网络的核心是autograd
包。autograd
包为张量上的所有操作提供了自动求导。
torch.Tensor
是这个包的核心类。如果设置 .requires_grad
为 True
(True代表此变量处需要计算梯度,False代表不需要),那么将会追踪所有对于该张量的操作。 当完成计算后通过调用.backward()
,自动计算所有的梯度, 这个张量的所有梯度将会自动积累到 .grad
属性。.detach()
方法将其与计算历史记录分离,并禁止跟踪它将来的计算记录。with torch.no_grad():
中。 在评估模型时特别有用,因为模型可能具有requires_grad = True
的可训练参数,但是我们不需要梯度计算。Tensor
和 Function
互相连接并生成一个非循环图,它表示和存储了完整的计算历史。 每个张量都有一个.grad_fn
属性,这个属性引用了一个创建了Tensor
的Function
(除非这个张量是用户手动创建的,即,这个张量的 grad_fn
是 None
)。https://zhuanlan.zhihu.com/p/43492827
https://zhuanlan.zhihu.com/p/29904755
https://blog.csdn.net/weixin_38347387/article/details/82936585