- 前言
- 一、numpy转tensor
- 二、tensor转numpy
- 三、numpy,tensor转数字
前言
最近在做深度学习作业时,经常将数据转来转去,数据格式不正确就不能被放入模型中训练,所以做一个数据转换的总结。
一、numpy转tensor
直接torch.tensor() 注意:不共享内存,转换较慢
a = np.zeros((2,10)) b = torch.tensor(a,dtype= torch.int) c = torch.tensor(a,dtype= torch.float) d = torch.tensor(a,dtype= torch.long) print(type(a)) print(type(b)) print(type(c)) print(type(d))
因为在训练时模型对数据有不同的要求,所以看要求转成不同的tensor格式。
torch.from_numpy(c)
共享内存,就是一个改变另一个也会改变。比较快。
a = np.zeros(3) b= torch.from_numpy(a) print(a,b) b[0] = 1 print(a,b) [0. 0. 0.] tensor([0., 0., 0.], dtype=torch.float64) [1. 0. 0.] tensor([1., 0., 0.], dtype=torch.float64)
二、tensor转numpy
x_ = x.detach().numpy()
detach()是将requires_grad为false,得到的这个tensor永远不需要计算其梯度不具有grad
如果x在Gpu上
x_ = x。cpu().detach().numpy()
三、numpy,tensor转数字
.item()
print(type(a[1])) print(type(b[1])) print(type(a[1].item())) print(type(b[1].item()))
注意·:该函数只能用在对象引用一个数组,不能用在包含一个数组的对象,如a.item()或b.item()



