自动求导
十分需要注意的一个点:只有浮点类型才可以对Tensor设置自动求导,如果是Int类型的话,会报如下错误:
x = torch.IntTensor([[1,2,3],[4,5,6]])
x.requires_grad_(requires_grad=True)
x.requires_grad
RuntimeError: only Tensors of floating point dtype can require gradients``
x = torch.tensor([[1.1, 2.2], [3.3, 4.4]],requires_grad=True)
m = x**2
print(x.requires_grad)
print(m.requires_grad)
out = m.sum()
out.backward()
print(m.grad)
print(x.grad)
True
True
None
tensor([[2.2000, 4.4000],
[6.6000, 8.8000]])
从上面可以看到,变量x和m都可以自动求导(即requires_grad=True),但是只有对x求出了导数,而对m没有求出导数。