a = [1, 2, 3, 4]
b = np.array(a)
a = [1, 2, 3, 4]
b = np.array(a)
c = b.tolist()
a = [1, 2, 3, 4]
b = torch.Tensor(a)
a = [1, 2, 3, 4]
b = torch.Tensor(a)
c = b.numpy().tolist()
这里 c 和 a 的差异在于 List 转为 Tensor 的时候默认 Tensor 中的数据为 float 类型,所以转回来的时候会变为浮点数。
a = [1, 2, 3, 4]
b = np.array(a)
c = torch.from_numpy(b)
a = [1, 2, 3, 4]
b = np.array(a)
c = torch.from_numpy(b)
d = c.numpy()
如果需要转换 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 在进行转换。