使用PyTorch將數據從CPU移動到GPU的四個方法
問題:已知一個張量cpu_tensor,將其移動到GPU
import torch # 在 CPU 上創(chuàng)建一個張量 cpu_tensor = torch.tensor([1, 2, 3])
一、使用 .to() 方法:
# 將張量移動到 GPU
gpu_tensor = cpu_tensor.to('cuda')
print("CPU Tensor:", cpu_tensor)
print("GPU Tensor:", gpu_tensor).to() 方法,直接在原始張量上進行設備轉移。它不會創(chuàng)建新的張量,而是在原地更新了原始張量的設備信息。這樣的方式很高效,避免了不必要的數據拷貝。
二、使用 .cuda() 方法:
# 將張量移動到 GPU
gpu_tensor = cpu_tensor.cuda()
print("CPU Tensor:", cpu_tensor)
print("GPU Tensor:", gpu_tensor)三、使用 torch.Tensor 構造函數:
# 使用構造函數將張量移動到 GPU
gpu_tensor = torch.Tensor(cpu_tensor).cuda()
print("CPU Tensor:", cpu_tensor)
print("GPU Tensor:", gpu_tensor)四、使用 torch.tensor 構造函數:
# 使用構造函數將張量移動到 GPU
gpu_tensor = torch.tensor(cpu_tensor, device='cuda')
print("CPU Tensor:", cpu_tensor)
print("GPU Tensor:", gpu_tensor)四個方法的輸出一致:
CPU Tensor: tensor([1,2,3])
GPU Tensor: tensor([1,2,3],device='cuda:0')
總結:
.to() 方法是一個通用的設備轉移方法,不僅可以用于 CPU 和 GPU 之間的轉移,還可以在不同的 GPU 之間轉移。
除了設備,.to() 方法還可以指定數據類型(dtype),如 .to('cuda', dtype=torch.float32)。
返回的是新的張量,原始張量不會被修改。
.to() 方法的語法為:tensor.to(device, dtype=None, non_blocking=False)。
.cuda() 方法是 .to('cuda') 的一種快捷方式,專門用于將張量移動到 GPU。
不支持在不同的 GPU 之間轉移。
與 .to() 方法不同,.cuda() 不接受 dtype 參數。
返回的是新的張量,原始張量不會被修改。
torch.Tensor 構造函數,先用torch.Tensor(cpu_tensor) 創(chuàng)建了一個新的張量,該張量的數據與 cpu_tensor 共享。然后,.cuda() 方法在原地將該張量的設備信息更新為 GPU。這個方法可以用于在已經存在的張量上執(zhí)行設備轉移。
torch.tensor 構造函數,并通過 device 參數指定了目標設備為 GPU。它實際上是在創(chuàng)建一個新的張量,將原始張量的數據復制到了 GPU 上。這個方法用于在創(chuàng)建張量時就指定設備。
這些方法的選擇取決于個人偏好和代碼上下文。在實際使用中,通常使用 .to('cuda') ,這種方式最為簡潔和通用。
以上就是使用PyTorch將數據從CPU移動到GPU的四個方法的詳細內容,更多關于PyTorch數據從CPU移動到GPU的資料請關注腳本之家其它相關文章!
相關文章
Python在centos7.6上安裝python3.9的詳細教程(默認python版本為2.7.5)
這篇文章主要介紹了Python在centos7.6上安裝python3.9(默認python版本為2.7.5)的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-10-10
python人工智能tensorflow優(yōu)化器Optimizer算法匯總
這篇文章主要為大家介紹了python人工智能tensorflowtf優(yōu)化器Optimizer算法匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05

