import torch
if __name__ == '__main__':
if torch.cuda.is_available():
device = 'cuda'
else:
device = 'cpu'
data = torch.rand(2,3, requires_grad=True)
print(data)
data_detach = data.detach()
print('detach():', data_detach )
data_cpu = data.detach().cpu()
print('detach().cpu():', data_cpu)
data_numpy = data.detach().cpu().numpy()
print('detach().cpu().numpy():', data_numpy)
附官方文档:
https://pytorch.org/docs/stable/autograd.html?highlight=detach#torch.Tensor.detach
- detach()
Returns a new Tensor, detached from the current graph.The result will never require gradient. - cpu()
Returns a copy of this object in CPU memory.If this object is already in CPU memory and on the correct device, then no copy is performed and the original object is returned. - numpy()
Returns self tensor as a NumPy ndarray. This tensor and the returned ndarray share the same underlying storage. Changes to self tensor will be reflected in the ndarray and vice versa.