本文重点
本文我们区别一下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)