原文:https://blog.csdn.net/hustchenze/article/details/79154139
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類型。app
下面簡單介紹一下Pytorch中變量之間的相互轉換。函數
(1)CPU或GPU張量之間的轉換.net
通常只要在Tensor後加long(), int(), double(),float(),byte()等函數就能將Tensor進行類型轉換;blog
例如:Torch.LongTensor--->Torch.FloatTensor, 直接使用data.float()便可get
還能夠使用type()函數,data爲Tensor數據類型,data.type()爲給出data的類型,若是使用data.type(torch.FloatTensor)則強制轉換爲torch.FloatTensor類型張量。class
當你不知道要轉換爲何類型時,但須要求a1,a2兩個張量的乘積,能夠使用a1.type_as(a2)將a1轉換爲a2同類型。變量
(2)CPU張量 ----> GPU張量, 使用data.cuda()數據類型
(3)GPU張量 ----> CPU張量 使用data.cpu()float
(4)Variable變量轉換成普通的Tensor,其實能夠理解Variable爲一個Wrapper,裏頭的data就是Tensor. 若是Var是Variable變量,使用Var.data得到Tensor變量numpy
(5)Tensor與Numpy Array之間的轉換
Tensor---->Numpy 能夠使用 data.numpy(),data爲Tensor變量
Numpy ----> Tensor 能夠使用torch.from_numpy(data),data爲numpy變量