Torch的Tensor与numpy的array会共享储存空间,修改一个也会导致另外一个被修改
一、torch tensor --> numpy array
用tensor对象的.numpy()方法
a = torch.ones(5) # tensor([1., 1., 1., 1., 1.])
b = a.numpy() # array([1., 1., 1., 1., 1.], dtype=float32)
a.add_(1)
print(a) # tensor([2., 2., 2., 2., 2.])
print(b) # array([2., 2., 2., 2., 2.], dtype=float32)
二、 numpy array --> torch tensor
用torch.from_numpy()函数
a = np.ones(5) # array([1., 1., 1., 1., 1.])
b = torch.from_numpy(a) # tensor([1., 1., 1., 1., 1.], dtype=torch.float64)
np.add(a,1,out=a)
print(a) # array([2., 2., 2., 2., 2.])
print(b) # tensor([2., 2., 2., 2., 2.], dtype=torch.float64)
三、list --> numpy array
不共享内存
ndarray = np.array(list)
四、numpy array --> list
不共享内存
list = ndarray.tolist()
五、list --> torch tensor
不共享内存
tensor=torch.Tensor(list)
六、torch tensor --> list
先转numpy array,再转list
list = tensor.numpy().tolist()
参考:
Torch的Tensor与numpy的array数据相互转换_负壹的博客-CSDN博客_array tensor torch
机器学习笔记之list, numpy.array, torch.Tensor 格式相互转化 - 时光飞逝,逝者如斯 - 博客园 (cnblogs.com)