Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换。

1.1 List --> Arrary: np.array(List 变量)

a = [1, 2, 3, 4]
b = np.array(a)

Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换。_第1张图片

1.2 Arrary --> List: Array 变量.tolist()

a = [1, 2, 3, 4]
b = np.array(a)
c = b.tolist()

Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换。_第2张图片

2.1 List --> Tensor: torch.Tensor(List 变量)

a = [1, 2, 3, 4]
b = torch.Tensor(a)

Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换。_第3张图片

2.2 Tensor --> List: Tensor 变量.numpy().tolist()

a = [1, 2, 3, 4]
b = torch.Tensor(a)
c = b.numpy().tolist()

Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换。_第4张图片
这里 c 和 a 的差异在于 List 转为 Tensor 的时候默认 Tensor 中的数据为 float 类型,所以转回来的时候会变为浮点数。

3.1 Array --> Tensor: torch.from_numpy(Array 变量)

a = [1, 2, 3, 4]
b = np.array(a)
c = torch.from_numpy(b)

Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换。_第5张图片

3.2 Tensor --> Array: torch.numpy(Tensor 变量)

a = [1, 2, 3, 4]
b = np.array(a)
c = torch.from_numpy(b)
d = c.numpy()

Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换。_第6张图片

如果需要转换 GPU 上的张量 Tensor,需要将其转换到 CPU 上,例如 GPU 上的 Tensor :

a = [1, 2, 3, 4]
b = np.array(a)
c = torch.from_numpy(b).cuda()
d = c.numpy()

会报错: TypeError: can’t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
这时应该使用

d = c.cpu().numpy()

先放回 CPU 在进行转换。

你可能感兴趣的:(Pytorch,Python)