本文我们区别一下tensor.data和tensor.detach(),我们所讲解的都是pytorch的1.0版本的情况
返回一个新的张量,它与当前图形分离。结果永远不需要梯度。返回的张量与原始张量共享相同的存储空间。将看到对其中任何一个的就地修改,并且可能在正确性检查中触发错误。
- import torch
- a=torch.full([8],1,requires_grad=True)
- b=a.data
- c=a.detach()
- print(a)
- print(b)
- print(c)

我们可以看到a.data和a.detach()都可以取出tensor的值,不同的是原来的tensor是requires_grad=True,而b,c都是requires_grad=False,也就是原来的可以求梯度,而之后的不可以求梯度
data
- import torch
- a = torch.tensor([1,2,3.], requires_grad =True)
- out=a.sigmoid()
- c=out.data
- c.zero_()
- print(c)
- print(out)
- out.sum().backward()
- print(a.grad)