詳解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.], [1., 1.]], device='cuda:0')
tensor gpu 轉為tensor cpu:
tensor_cpu = tensor_gpu.cuda()
>>> tensor_gpu.cpu() tensor([[1., 1.], [1., 1.]])
2. tensor cpu 和 ndarray 之間的轉化:
tensor cpu 轉為 ndarray:
>>> np_array= tensor_cpu.numpy() array([[1., 1.], [1., 1.]], dtype=float32)
ndarray 轉為 tensor cpu:
注:ndarray的默認精度為64位,Tensor的默認精度位32位,所以通過Tensor直接轉換的話,精度會轉換到32位,若通過from_numpy的方式,則會保留原來64位精度
>>> torch.from_numpy(np.ones((2,2))) tensor([[1., 1.], [1., 1.]], dtype=torch.float64) >>> torch.Tensor(np.ones((2,2))) tensor([[1., 1.], [1., 1.]])
3. tensor cpu 和 scalar 之間的轉化:
如果只是訓練了一個簡單的分類網絡,對單個樣本的輸出會是一個標量(scalar)
>>>torch.ones((1,1)).item() 1.0
通過一張圖說明三者的轉化方式:
到此這篇關于詳解pytorch tensor和ndarray轉換相關總結的文章就介紹到這了,更多相關pytorch tensor和ndarray轉換內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Anaconda出現CondaHTTPError: HTTP 000 CONNECTION FAILED for url
使用anaconda創(chuàng)建一個新的環(huán)境,執(zhí)行“conda create -n scrapyEnv python=3.6”,結果出現了CondaHTTPError,下面我們就一起來了解一下解決方法吧2021-05-05