1. 程式人生 > 程式設計 >詳解pytorch tensor和ndarray轉換相關總結

詳解pytorch tensor和ndarray轉換相關總結

在使用pytorch的時候,經常會涉及到兩種資料格式tensor和ndarray之間的轉換,這裡總結一下兩種格式的轉換:

1. tensor cpu 和tensor gpu之間的轉化:

tensor cpu 轉為tensor gpu:
tensor_gpu = tensor_cpu.cuda()

>>> tensor_cpu = torch.ones((2,2))
tensor([[1.,1.],[1.,1.]])
>>> tensor_gpu = tensor_cpu.cuda()
tensor([[1.,1.]],device='cuda:0')

tensor gpu 轉為tensor cpu:

tensor_cpu = tensor_gpu.cuda()

>>> tensor_gpu.cpu()
tensor([[1.,1.]])

2. tensor cpu 和 ndarray 之間的轉化:

tensor cpu 轉為 ndarray:

>>> np_array= tensor_cpu.numpy()
array([[1.,dtype=float32)

ndarray 轉為 tensor cpu:
注:ndarray的預設精度為64位,Tensor的預設精度位32位,所以通過Tensor直接轉換的話,精度會轉換到32位,若通過from_numpy的方式,則會保留原來64位精度

>>> torch.from_numpy(np.ones((2,2)))
tensor([[1.,dtype=torch.float64)
>>> torch.Tensor(np.ones((2,1.]])

3. tensor cpu 和 scalar 之間的轉化:

如果只是訓練了一個簡單的分類網路,對單個樣本的輸出會是一個標量(scalar)

>>>torch.ones((1,1)).item()
1.0

通過一張圖說明三者的轉化方式:

詳解pytorch tensor和ndarray轉換相關總結

到此這篇關於詳解pytorch tensor和ndarray轉換相關總結的文章就介紹到這了,更多相關pytorch tensor和ndarray轉換內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!