将 PyTorch CUDA 张量转换为 NumPy 数组

问题描述 投票:0回答:4

如何将

torch.Tensor
(在 GPU 上)转换为
numpy.ndarray
(在 CPU 上)?

python numpy pytorch
4个回答
13
投票

使用

.detach()
将 GPU / CUDA 张量转换为 numpy 数组:

tensor.detach().cpu().numpy()

6
投票
some_tensor.detach().cpu().numpy()

  • .detach()
    与后向图分离以避免复制渐变。
  • .cpu()
    将数据移至CPU。
  • .numpy()
    torch.Tensor
    转换为
    np.ndarray

5
投票

如果张量位于

gpu
cuda
上,请将张量复制到
cpu
并使用以下方法将其转换为 numpy 数组:

tensor.data.cpu().numpy()

如果张量已打开

cpu
,您就可以执行
tensor.data.numpy()
。但是,您也可以这样做
tensor.data.cpu().numpy()
。如果张量已经在
cpu
上,那么
.cpu()
操作将不起作用。这可以用作与设备无关的方式将张量转换为 numpy 数组。


0
投票
tensor.numpy(force=True)

根据文档:

如果force为True,这相当于调用t.detach().cpu().resolve_conj().resolve_neg().numpy()。如果张量不在 CPU 上或者设置了共轭位或负位,则张量将不会与返回的 ndarray 共享其存储。将force设置为True可能是一个有用的简写。

© www.soinside.com 2019 - 2024. All rights reserved.