解决方案:炼丹师养成计划 Pytorch+DeepLearning遇见的各种报错与踩坑避坑记录(一)
生活随笔
收集整理的這篇文章主要介紹了
解决方案:炼丹师养成计划 Pytorch+DeepLearning遇见的各种报错与踩坑避坑记录(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 問題1: load() missing 1 required positional argument: 'Loader'
- 問題2:ModuleNotFoundError: No module named 'dateutil'
- 問題3:RuntimeError: Expected object of backend CPU but got backend CUDA for argument #4 'mat1'
- 問題4:ValueError: not enough values to unpack (expected 3, got 2)
- 問題5:Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same
問題1: load() missing 1 required positional argument: ‘Loader’
問題原因:該報錯原因提示為load函數缺少必填的Loader參數
解決方案1:使用safe_load()函數代替 load()
import yamlwith open(filename, 'r') as f:yaml_cfg = edict(yaml.safe_load(f))解決方案2:添加參數 Loader=yaml.FullLoader
import yamlwith open(filename, 'r') as f:yaml_cfg = edict(yaml.load(f,Loader=yaml.FullLoader))解決方案3:降級pyyaml 版本(親測有效)
pip install pyyaml==5.4.1
問題2:ModuleNotFoundError: No module named ‘dateutil’
問題原因:pip install dateutil失敗,因為該模塊非常坑,他叫 python-dateutil
解決方案: pip3 install python-dateuti
問題3:RuntimeError: Expected object of backend CPU but got backend CUDA for argument #4 ‘mat1’
問題原因:期望的對象是在后端CPU,但參數在后端CUDA上面,直白來說,就是模型沒有放到cuda上面,但是模型需要的參數或者模型的部分模塊被放到了cuda上面。
解決方案:將模型也放到cuda上
# 進行可用設備檢測, 有GPU的話將優先使用GPUdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")model = model.to(device) 或 model = model.cuda(device)問題4:ValueError: not enough values to unpack (expected 3, got 2)
問題原因:期望有三個返回值,但其實函數只有兩個返回值
解決方案:定位到錯誤,檢查函數和接收函數返回值的參數個數
問題5:Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same
問題原因:輸入的數據類型為torch.cuda.FloatTensor,說明輸入數據在GPU中
模型參數的數據類型為torch.FloatTensor,說明模型還在CPU
解決方案:將對應的模型參數放入cuda
如:
出錯,說明img[i]在gpu上面,而我們的proj還在cpu上,所以要把proj放到cuda上面去:
proj = nn.Conv2d(3, 3, 3, 4, 0) proj = proj.cuda() imgs[i] = proj(imgs[i])總結
以上是生活随笔為你收集整理的解决方案:炼丹师养成计划 Pytorch+DeepLearning遇见的各种报错与踩坑避坑记录(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux第七章:6.管道 | 与 gr
- 下一篇: 01-2021年6月