tensor.detach()
:
从计算图中脱离出来,返回一个新的tensor,新的tensor和原tensor共享数据内存,(这也就意味着修改一个tensor的值,另外一个也会改变),但是不涉及梯度计算。在从tensor转换成为numpy的时候,如果转换前面的tensor在计算图里面(requires_grad = True),那么这个时候只能先进行detach操作才能转换成为numpy
x = torch.zeros([3, 4], requires_grad = True)
x
y = x.numpy()
print(y)
'''输出:(报错了)
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-11-8c9629e859f6> in <module>
1 x = torch.zeros([3, 4], requires_grad = True)
2 x
----> 3 y = x.numpy()
4 print(y)
RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
'''
x = torch.zeros([3, 4], requires_grad = True)
x
y = x.detach().numpy()
print(y)
'''输出
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
'''