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