需要注意的是,Numpy 在 64 位机子上浮点数默认的数据类型是 float64,而 Pytorch 默认的是 float32。所以为了确保转换后的数据类型是 float32,以及兼顾适用性,使用 torch.as_tensor() 都是更好的选择
(1)提示list没有.shape的属性
a=[1,2,3] a=np.array(a) a.shape
(2)将numpy变为tensor
a=np.array([1,2,3]) a=torch.from_numpy(a) a.shape,a.dtype #Out:torch.Size([3],(torch.Size([3]), torch.int32)) #或者采用torch.as_tensor(a,dtype=float) a=np.array([1,2,3]) a=torch.as_tensor(a,dtype=float) a.shape,a.dtype #out:(torch.Size([3]), torch.float64)
(3)将tensor转化为numpy
a=torch.FloatTensor([1,2,3])
a=a.numpy()
a.shape,a.dtype
#((3,), dtype('float32'))
(4)查看数据的类型和所属于的是list或者是元祖之类
a=[1,2,3]
a=np.array(a)
a.shape,a.dtype,type(a)
#out:((3,), dtype('int32'), numpy.ndarray)
(5)numpy的数据的list 和元祖和np.array直接的转换
#(1)将list转换为numpy
a=[1,2,3]
b=np.array(a)
b.dtype,type(b)
#out:(dtype('int32'), numpy.ndarray) #记住了list是没有shape和type等属性
#(2)将元祖转换为numpy
a=(1,2,3)
b=np.array(a)
b.dtype,type(b)
#output:(dtype('int32'), numpy.ndarray) #记住了tuple也是没有shape和type等属性
(3)将字典转换为numpy
a={'a':1,'b':2}
b=np.array(a)
b.dtype,type(b)
#out:(dtype('O'), numpy.ndarray) #记住了dict也是没有shape和type等属性
(6)tensor的数据list和元祖和tensor的转换(tensor的list和字典等可以使用:len(list)来进行看list的个数)
方法一:List Tensor转Tensor (torch.cat):torch.cat(a,dim=1)--dim表示按照哪个维度进行拼接,dim=1则按照列进行拼接
方法二:采用torch.stack



