如何将
torch.Tensor
(在 GPU 上)转换为 numpy.ndarray
(在 CPU 上)?
使用
.detach()
将 GPU / CUDA 张量转换为 numpy 数组:
tensor.detach().cpu().numpy()
如果张量位于
gpu
或 cuda
上,请将张量复制到 cpu
并使用以下方法将其转换为 numpy 数组:
tensor.data.cpu().numpy()
如果张量已打开
cpu
,您就可以执行 tensor.data.numpy()
。但是,您也可以这样做
tensor.data.cpu().numpy()
。如果张量已经在 cpu
上,那么 .cpu()
操作将不起作用。这可以用作与设备无关的方式将张量转换为 numpy 数组。
tensor.numpy(force=True)
根据文档:
如果force为True,这相当于调用t.detach().cpu().resolve_conj().resolve_neg().numpy()。如果张量不在 CPU 上或者设置了共轭位或负位,则张量将不会与返回的 ndarray 共享其存储。将force设置为True可能是一个有用的简写。