1、Tensor的grad属性介绍
PyTorch的Tensor有个grad属性,默认情况下,该属性为None,当第一次调用backward()计算梯度时,此属性被赋值,其值为计算的梯度。并且,将来对backward的多次调用之后,还会累积梯度,所以大家要记得清空梯度。
2、Tensor的grad应用举例
import torch
x = torch.tensor([[1., -1.], [1., 1.]], requires_grad=True)
print("初始情况下,梯度值为:", x.grad)
out = x.pow(2).sum()
# 计算图需要保存,否则第二执行backward则会报错
out.backward(retain_graph=True)
print("第1次执行backward后的梯度值为:", x.grad)
out.backward()
print("第2次执行backward后的梯度值为:", x.grad)
运行结果为:
None
tensor([[ 2., -2.],
[ 2., 2.]])
tensor([[ 4., -4.],
[ 4., 4.]])
3、相关参考
https://pytorch.org/docs/stable/generated/torch.Tensor.grad.html#torch.Tensor.grad