Pytorch變數型別轉換

Candy_GL發表於2018-07-27

Pytorch的資料型別為各式各樣的Tensor,Tensor可以理解為高維矩陣。與Numpy中的Array類似。Pytorch中的tensor又包括CPU上的資料型別和GPU上的資料型別,一般GPU上的Tensor是CPU上的Tensor加cuda()函式得到。通過使用Type函式可以檢視變數型別。一般系統預設是torch.FloatTensor型別。例如data = torch.Tensor(2,3)是一個2*3的張量,型別為FloatTensor; data.cuda()就轉換為GPU的張量型別,torch.cuda.FloatTensor型別。

下面簡單介紹一下Pytorch中變數之間的相互轉換。

(1)CPU或GPU張量之間的轉換

一般只要在Tensor後加long(), int(), double(),float(),byte()等函式就能將Tensor進行型別轉換;

例如:Torch.LongTensor--->Torch.FloatTensor, 直接使用data.float()即可

還可以使用type()函式,data為Tensor資料型別,data.type()為給出data的型別,如果使用data.type(torch.FloatTensor)則強制轉換為torch.FloatTensor型別張量。

當你不知道要轉換為什麼型別時,但需要求a1,a2兩個張量的乘積,可以使用a1.type_as(a2)將a1轉換為a2同型別。

(2)CPU張量 ---->  GPU張量, 使用data.cuda()

(3)GPU張量 ----> CPU張量 使用data.cpu()

(4)Variable變數轉換成普通的Tensor,其實可以理解Variable為一個Wrapper,裡頭的data就是Tensor. 如果Var是Variable變數,使用Var.data獲得Tensor變數

(5)Tensor與Numpy Array之間的轉換

Tensor---->Numpy  可以使用 data.numpy(),data為Tensor變數

Numpy ----> Tensor 可以使用torch.from_numpy(data),data為numpy變數

相關文章