一、出錯誤背景:
Pytorch 中想使用 CUDA 對程序計算進行加速
二、問題分析
錯誤的意思:object 的 device 類型期望得到的是 cuda 類型,但是實際上的類型確實 cpu 類型,在調用二分類交叉熵損失進行前向計算的時候
三、檢查下面幾點:
- 模型是否放到了CUDA上 model = model.to(device) 或 model = model.cuda(device)
- 輸入數據是否放到了CUDA上 data = data.to(device) 或 data = data.cuda(device)
- 模型內部新建的張量是否放到了CUDA上 p = torch.tensor([1]).to(device) 或 p = torch.tensor([1]).cuda(device)
一般情況下應該是忘記了第三點,而根據提示也可以知道,在進行二分類交叉熵損失進行前向計算的過程中,存在沒有放到cuda上的張量,找到他,fix it !!!
其中:device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
四、解決方式