list,numpy,tensor之间相互转换的方法:
a=[[1,2],[3,4]]#list
print(a)
b=np.array(a)#list->numpy
print(b)
c=torch.tensor(a)#list->tensor
print(c)
print(b.tolist())#numpy->list
print(c.tolist())#tensor->list
print(torch.tensor(b))#numpy->tensor
print(torch.from_numpy(b))#同上
print(c.numpy())#tensor->numpy
对了,温馨提示,tensor可以在GPU上运行,其他两个都不可以,这就是为什么你用GPU运行的时候有时会报不是tensor
的错误,必须先转化为tensor。
还有,GPU上的tensor不能直接转为numpy,需要先放到CPU上。
a=a.cpu()#放到CPU
a.numpy()#这才对。
放回GPU上?
a=a.cuda()#放到GPU
当然啦,cuda()
,cpu()
还有一种写法:
device=torch.device("cpu")#torch.device("cuda")
a=torch.tensor([1,2])
a.to(device)#放到CPU